1前缀和:
可以记录前1-1~n的和
然后f[k--m]=f[m]-f[k-1];
2区间加:
记录第n个数和第n+1个数的关系来求出a[n]
void add(int l,int r,int k)
{
p[l]+=k,p[r+1]-=k;
}
void get_a()
{
for(int i=1;i<=n;i++)
a[i]=a[i-1]+p[i];
}
善用记忆化搜索
3分块:
将一个区间分成sqrt(n)块
维护每一个块的值
x在第(int)(x/t)块
4拆分:
将一个问题分成两个相同的问题
eg:你前面和后面有多少人?=你前面有多少人+你后面有多少人;
原文:https://www.cnblogs.com/zyfltyyz/p/11713075.html