12 2016 档案
摘要:如果a串是另b串的后缀,那么在trie图上沿着b的fail指针走一定可以走到a串。 而a串在b串里出现多少次就是它是多少个前缀的后缀。 所以把fail边反向建树维护个dfs序就行了。 并不是很难。。。但没想出来TAT
阅读全文
摘要:查最小值,删除,翻转。。。 显然splay啊。。。
阅读全文
摘要:考虑每个回文串,它一定是它中心字母的最长回文串两侧去掉同样数量的字符后的一个子串。 所以我们可以用manachar求出每一位的回文半径,放到哈希表里并标记出它的下一个子串。 最后拓扑排序递推就行了。。。 这道题丧心病狂卡哈希。。。。wa了一屏。。。
阅读全文
摘要:终于补完坑了哈哈哈 这个东西很神奇,看了半天网上的解释和课件,研究了很长时间,算是大概明白了它的原理。 话不多说先上图。 我们要求的h(x)=f(x)*g(x),f(x)=Σai*x^i,g(x)=Σbi*x^i. 朴素求复杂度是$n^2$的,但一个$x$次多项式在平面上可以由$x+1$个点唯一插值
阅读全文
摘要:左偏树。。。 打两个标记。。。和线段树一样,先下放cheng再下放*。 每回合并子树就行了。
阅读全文
摘要:splay乱搞。 调了两个多小时。。。这辈子再也不想写splay了。。。 维护左边最大连续和右边最大连续,维护两个标记,无脑push_down、push_up就行了。 注意最大连续和至少要包含一个数。
阅读全文
摘要:求出来后缀数组的rank就行了,不会可以去看集训队论文。
阅读全文
摘要:被后缀三人组虐了一下午,写道水题愉悦身心。 题很裸,求lcq时二分下答案就行了,写的不优美会被卡时。 (写题时精神恍惚,不知不觉写了快两百行。。。竟然调都没调就A了。。。我还是继续看后缀自动机吧。。。)
阅读全文
摘要:稍微看了一下KD-tree的讲义,大概明白了它的原理,但是实现不出来。。。 所以无耻的抄了一下黄学长的。。。
阅读全文
摘要:容易看出ans[i]=ans[i-1]-q[i],q[i]为删去第i个数减少的逆序对。 先用树状数组算出最开始的逆序对,预处理出每个数前边比它大的和后边比它小的,就求出了q[i]的初始值。 设b[i]是第i个删除的数,pos[i]为i在数列里的位置。 对q[i]产生影响的是 1. j<i,pos[b
阅读全文
摘要:一个序列在所有变换中都单调不降的条件是i<j,a[i]<=min[j],mx[i]<=a[j],所以套CDQ就行了。
阅读全文
摘要:给每个国家建一个链表,这样分治过程中的复杂度就和序列长度线形相关了,无脑套整体二分就可以。 (最坑的地方是如果所有位置都是一个国家,那么它的样本个数会爆longlong!!被这个坑了一次,大于p[i]的时候break就行了)。
阅读全文
摘要:其实这题跟矩阵乘法没有任何卵关系,直接整体二分,用二维树状数组维护(刚刚学会>_<),复杂度好像有点爆炸(好像有十几亿不知道是不是算错了),但我们不能怂啊23333。
阅读全文
摘要:第一道整体二分,因为只需要知道每个询问区间中比mid大的数有多少个,就可以直接用线段树区间加,区间求和了。
阅读全文
摘要:本质是一个三维偏序,一位排序后cdq分治,一维在子函数里排序,一维用树状数组维护。 把三维相等的合并到一个里面。
阅读全文
摘要:第一道CDQ,抄了下helenkeller的代码,感觉和归并排序差不多。。。 因为左半边的修改肯定在右半边的询问之前,所以就不用管时间的限制了,可以直接x轴排序树状数组处理y轴。。。
阅读全文
摘要:gcd(x,y)=d-->gcd(x/d,y/d)=1。 即求Σ(i<=n/d)Σ(j<=m/d) e(gcd(i,j)) 因为e=miu×1,可以卷积。 因为多组询问,需要sqrt(n)计算。
阅读全文
摘要:裸的2D gcd。ans=(Σ(d<=n)phi[d]*(n/d)*(m/d))*2-n*m;
阅读全文
摘要:dp[i][j][0]代表当前匹配到i号点走了j步且没到过单词节点,1代表到过,直接转移。
阅读全文
摘要:根据题意建出trie图,代表单词的点不能走,直接或间接指向它的点也不能走。这样的话如果能在图中找到一个环的话就是TAK,否则是NIE。
阅读全文
摘要:初学AC自动机,要先对于每一个模式串求出来trie树,在此基础上构建fail指针,然后在trie树加上失配边构建出整张trie图。 AC自动机的原理和KMP差不多,一个节点的fail指针就是指向trie树上一个最长前缀等于这个单词的后缀。 首先fail[0]=0,然后把0有的每个孩子push进一个队
阅读全文
摘要:然而我还是在继续刷水题。。。 终于解开了区间第k大的心结。。。 比较裸的线段树套平衡树,比较不好想的是求区间第k大时需要二分一下答案,然后问题就转化为了第一个操作。复杂度nlog3n。跑的比较慢。。。 在查前驱后继的时候写错了。。。如果要直接赋值ans的话前驱是k[x]<=z,后继是k[x]<z,如
阅读全文
摘要:水题。。。貌似理解splay怎么维护数列了。。。 每个点维护一个size,它的位置就是它的size,区间翻转的话可以打标记,find的时候push_down,交换左右子树。
阅读全文
摘要:自己yy了找前驱和后继,学了学怎么删除。。。(反正就是练模板)
阅读全文
摘要:用晚自习学了一下splay模板,没想象中那么难,主要是左旋和右旋可以简化到一个函数里边,减少代码长度。。。
阅读全文

浙公网安备 33010602011771号