-
题意:一串电话号码,每个数字+8取各位后,把每个数字写成对应的大写英文,从"ZERO"和“NINE”,然后打乱字母的顺序。现在给出打乱的字母顺序,问可能的字典序最小的电话号码是是多少(可能有前导0) 思路:分析0..9 每个数字的英文组成。。。然后大概类似解方程。。可以根据字母的个数确定每个数字的个数。。。 然后-8。。。存一下排个序就好了。。。1A #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include <vector> …
Read More -
题目链接 题意:给出一个由‘(’和‘)’组成的字符串。。。然后给出若干查询。。。每个查询一个区间,问区间中能匹配的括号数。。。 思路:考虑某一个区间中的括号匹配。。。其实是一个不断寻找'()'然后删去的过程。。。 因此对于某个区间的括号匹配数。。。等于左边区间和右边区间和合法匹配数之和,再加上左区间和右区间新的能匹配到一起的括号数。 (说“因此”是因为。。。只要左边有没匹配的左括号。。。右边有没匹配的右括号。。。因为他们中间有的都是匹配好的括号,会被删除。。。所以两边的括号总能匹配在一起) 具体做法是: 线段树的节点中有三个域,分别表示,合法的括号匹配数,没有被匹配的左括号数,和没有被匹配的右括号数。 query的时候要合并左右两个 …
Read More -
是14年才被提出来的算法... 先%一下该算法的作者:作者的codeforces页 接下来,老规矩,放一波资料: 参考博客1 codeforces上的讲解 20171115 update: emmmm,这篇是学习笔记是16年9月写的。。。。一转眼13个月过去了啊。。 回文树,也叫回文自动机,简称PAM 学了SAM之后PAM简直是傻逼算法... 该算法时间和空间复杂度都是O(n) 这样的复杂度基于以下结论: 长度为n的字符串的本质不同的回文串的数目不超过n 因此状态数开到和字符串长度一样就可以了orz len表示某个状态所表示的回文串的长度 cnt表示某个状态所表示的回文串的数量 构建PAM的算法仍然是增量算法,在某一时刻,本质不同的 …
Read More -
题目链接 题意:给出n个数,q个查询,每组一个区间,询问区间中所有数的乘积的欧拉函数9+7的答案是多少。 思路:这道题需要一点欧拉函数的知识。 phi(n)是欧拉函数,意义为小于等于n并且与n互质的数的个数。 To calculate the answer on every query let's use the formula , where _p_1, p_2, ..., p__k — all prime numbers which divided_n. 如果知道欧拉函数的这个公式。。。那么这道题就成了水题。。。。 考虑两个数a,b的欧拉函数。 一开始考虑也许有什么性质。。。查了下欧拉函数的wiki 欧拉函数_维基百科 欧拉函数 …
Read More -
poj 2886 题目链接 题意:n个人围成一圈,每个人身上由一个数,可正可负。从第k个人开始出圈,如果第k个人身上的数是X,X>0,就左边第x个没有出圈的人出圈,否则右边第-X个人出圈。 第k个人出圈得到的糖果数目为f(k),f(x)表示x的因子个数。现在问谁能拿到最多的糖果,并且拿到了多少糖果。 思路:看起来好像很麻烦。。其实可以分解成两个问题。 第一个子问题就是约瑟夫问题的加强版。。。每次间隔不是定数,而取决与上一次出队的人。。。 终点是数据有5E5.。。模拟的话会炸掉。。。所以用线段树来模拟这个过程。。。 类似于那道插队的问题。。。线段树的域存的是某区间中空位置的数量。。初始为1.。。 然后每次update的时候优先查 …
Read More -
1053: [HAOI2007]反素数ant Time Limit: 10 Sec Memory Limit: 162 MB Submit: 2750 Solved: 1559 [Submit][Status][Discuss] Description 对于任何正整数x,其约数的个数记作g(x)。例如g(1)=1、g(6)=4。如果某个正整数x满足:g(x)>g(i) 0<i<x ,则称x为反质数。例如,整数1,2,4,6等都是反质数。现在给定一个数N,你能求出不超过N的最大的反质数么 ? Input 一个数N(1<=N<=2,000,000,000)。 Output 不超过N的最大的反质数。 …
Read More -
题目链接 题意:求约数个数恰好为n个的最小的x 思路:这道题是作为反素数的例题出现在acdreamer的博客里的。 但是实际上,这道题应该和反素数没有关系。 如果题目问的是最小的约数个数大于等于n的x,那么答案一定是反素数...打表就行了。。。 但是问的是**恰好,**比如如果n为5,那么最小的x是16,但是x不是反素数。 所以其实就是个dfs啦。 理论依据是: 一个数 A 可以分解成 p1k1 * p2k2 * …… * pnkn 其中p为素数。这样分解之后,A的因子个数 S = (k1+1) *( k2+1) * …… *( kn+1) 以及要找的是一个最小的x,满足约数个数等于n。 那么关于反素数的两个性质依然是满足的: …
Read More -
题目链接 题意:求区间[a,b]中约数最多的那个数,如果有多个,输出最小的。 思路:看起来好像和反素数没什么关系...只是打个约数个数的表... 但是实际上,所有的答案恰好都是反素数。。。 我们回顾反素数的定义:设f(x)为x的约数个数,那么如果f(n)>f(i) (0<i<n),n就被称为反素数. 换句话说,对于所有f(x)==k的x组成的集合,最小的那个x就是反素数。 需要注意的是,因数个数并不单调。。因此上面那句话并不准确。。。 举个例子,16虽然有5个因子,是第一个有5个因子的数,但是16不是反素数,因为比16小的12有6个因子。 那么这个东西有什么用呢。。。。 我们发现。。。反素数的分布很稀疏。。。因 …
Read More -
acdreamer的博客 wiki上的反素数是什么鬼orz...完全不是一个东西吧。。。。 反素数直观得理解。。。就是一个约数特别多的数。。。因为素数的约数最少。。。所以约数多的数就叫反素数(?随便口胡的... 由于1E18之前的反素数大概只有167个。。。所以打表可以很方便。。。 反素数是第一个约数“增长”到某个数的数,必须是“增长”,而不是第一个约数个数为某个数的数。 因为16是第一个约数个数为5的个数,但是16不是反素数,因为比16小的12有6的约数。。。 反素数的两个性质非常好用。。。 一个是反素数分解的质因子一定是连续的。。。 另一个是反素数分解的质因子的指数一定不增。。。 这两个性质都很显然。。。。证明没啥必要。。。 这 …
Read More -
题目链接 题意:n只青蛙,第i只位于x[i],舌头长度为t[i]。m只蚊子,第i只蚊子所在位置为p[i],蚊子的大小为b[i]。 蚊子按照出现顺序输入。 一只青蛙能吃到蚊子当且仅当蚊子和青蛙在同一个位置,或者蚊子在青蛙右边并且与青蛙的距离小于等于该青蛙舌头的长度。 当多只青蛙可以吃到同一只蚊子的时候,最左边的那只青蛙来吃。 当一只青蛙吃掉一只蚊子以后,青蛙的舌头增加蚊子的大小。 当一只青蛙吃掉一只蚊子后,因为舌头边长而又能吃到其他蚊子的时候,这只青蛙会继续吃,只到当前没有蚊子可以被任何一只青蛙吃到,在这个过程之后才会飞来下一只蚊子。 思路:问题的关键在于,对于某只蚊子,我们如何找到能吃到该蚊子的青蛙中最左边的那只。 可以抽象成寻找区 …
Read More