摘要: 常用算法设计和优化策略(本蒟蒻不定期更新) 下面是紫书上讲的常用算法设计策略和优化策略: 分治法:将问题分成相同的独立子问题求解。拆分出的问题必须有最优子结构性质(子问题求出的是最优解) 动态规划。本质是:对于一个问题,通过定义状态与状态间的关系来 分解问题 。利用单阶段问题之间的联系,或者同一阶段阅读全文
posted @ 2018-03-01 23:14 pechpo 阅读(23) 评论(0) 编辑
摘要: 替罪羊树 替罪羊树是一种不用旋转的平衡树,并且速度还不错,大约在treap和splay之间吧(treap就是那么快)。 这里用rank和xth操作实现了pre和next操作。注意rank操作找的是 =x且最小的编号,这样pre只需要查找rank(x) 1,next只需要查找rank(x+1),很优雅阅读全文
posted @ 2018-05-20 10:35 pechpo 阅读(4) 评论(0) 编辑
摘要: CF 980D Perfect Groups(数论) 一个数组a的子序列划分仅当这样是合法的:每个划分中的任意两个数乘积是完全平方数。定义a的权值为a的最小子序列划分个数。现在给出一个数组b,问权值为i的b的子串个数。 这题意真不是人类智慧能轻易描述的。据说此题在比赛场上读题30min,做题5min阅读全文
posted @ 2018-05-17 20:45 pechpo 阅读(4) 评论(0) 编辑
摘要: CF 983B XOR pyramid(区间dp,异或) 若有一个长度为m的数组b,定义函数f为: $f(b) = \begin{cases} b[1] & \quad \text{if } m = 1, \\ f(b[1] \oplus b[2],b[2] \oplus b[3],\dots,b[阅读全文
posted @ 2018-05-16 22:22 pechpo 阅读(16) 评论(0) 编辑
摘要: CF 984C Finite or not? (数论) 给定T(T0$,$c_i 0$,那么设$b'=(b, q)$,那么不停将$b'$除$q$得到$q'$,最后剩下的数就是D。现在只需判断D是否为1即可。阅读全文
posted @ 2018-05-16 20:37 pechpo 阅读(11) 评论(0) 编辑
摘要: CF 979D Kuro and GCD and XOR and SUM(异或 Trie) 给出q( include using namespace std; const int maxnum=1e5+5, maxq=1e5+5, maxn=maxq 17 17, INF=1e9; //maxnum阅读全文
posted @ 2018-05-16 19:39 pechpo 阅读(9) 评论(0) 编辑
摘要: (不)常用打比赛网站 由于我记性太垃圾,还是来整理一下比较好。 "Codeforces" "Atcoder" "计蒜客" "HackerRank" "LeetCode" "HihoCoder" http://acmicpc.info/archives/224阅读全文
posted @ 2018-05-16 19:13 pechpo 阅读(2) 评论(0) 编辑
摘要: 排序工作量之新任务(SHOI2001) 给出两个整数n和t,求n的全排列中逆序对数为t的个数,和逆序对数为t的字典序最小全排列。 首先第一个问题可以用dp解决,$f[i][j]$表示前i个数,j个逆序对的序列数,那么$f[i][j]=f[i 1][j k]\ (k include using nam阅读全文
posted @ 2018-05-08 21:14 pechpo 阅读(3) 评论(0) 编辑
摘要: Splay 还是前面那个模板。注意所有操作以后都要splay一次,避免被卡掉。 splay的复杂度证明可看论文(知乎的相关问题中有链接),大体思想是定义树的势函数,进行势能分析,可证得splay一次的时间复杂度是$O(logn)$。由于被splay的点就是被查询的点,并且查询一个点A的路径和spla阅读全文
posted @ 2018-05-08 20:18 pechpo 阅读(11) 评论(0) 编辑
摘要: Dynamic Rankings(树状数组套权值线段树) 给定一个含有n个数的序列a[1],a[2],a[3]……a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i],a[i+1],a[i+2]……a[j]中第k小的数是多少(1≤k≤j i+1),并且,你可以改变一些a[i]的值,改变阅读全文
posted @ 2018-05-04 11:06 pechpo 阅读(6) 评论(0) 编辑
摘要: A B problem(FFT) 设两个多项式$A(x)$和$B(x)$,它们的系数镜像反转一下,得到的多项式是$A'(x)$和$B'(x)$。那么$C(x)=A(x) B(x)$和$C'(x)=A'(x) B'(x)$的系数也是镜像反转的。这个,,感性理解一下吧。 于是倒过来搞会很方便。由于是大整阅读全文
posted @ 2018-05-03 11:40 pechpo 阅读(3) 评论(0) 编辑