I use blog to record something.
构造 1.构造一个序列c, $c_i$ = $\sum^i_{j=i-2^k+1}a_j$,其中k表示i的二进制表示中末尾连续的0的个数,记lowbit(i) = $2^k$,特别地,记lowbit(0)=0 例如i = $1100...
// // Created by dhy on 18-8-8. // # include <iostream> # include <cstring> using namespace std; const in...
区间dp 定义:从较小的区间向较大的区间转移,就是按照区间长度从小到大转移。 环上dp 在环上描述的问题,采用倍增成链。把一个环上的数据,放到两倍长的链上.(you know that)
差分->前缀和的逆运算 b[i]是a[i]-a[i-1]. 如果要对某一区间i-j进行加减操作,直接b[i]+x b[j+1]-x就行,在O(1)内完成操作,输出a数组时,a[i] = $\sum b[1…i]$ 分块 把序列分...
// // Created by dhy on 18-8-8. // # include <iostream> using namespace std; int q[500000+1],c[5000000+1] = {0}...
柯西不等式 $(a^2+b^2)(c^2+d^2)>=(ac+bd)^2$ 反序和<=乱序和<=顺序和 调和级数 $\frac{1}{1}+\frac{1}{2}+…..+\frac{1}{n}==ln n + r$...