
分块
赤兔码
我服了
展开
-
两个多项式的卷积(对询问分块)
两个多项式的卷积思路:对询问分块,当凑够一定数量的修改时进行一次NTT,然后每次查询就直接暴力求还没有进行NTT的那一部分的贡献,块大小为sqrt(n*log(n))最合适,注意坑点:输入的a[i]和b[i]是有可能小于0的!#include<iostream>#include<cstdio>#include<cmath>#include<algorithm>using namespace std;const int MAX_N=100100;原创 2020-10-28 22:07:22 · 588 阅读 · 0 评论 -
整除分块 模板
求n/1+n/2+n/3+n/4+…n/n的和,n/i都向下取整。for(i=1,j;i<=n;i=j+1){ j=n/(n/i); ans+=(j-i+1)*(n/i);//n/i代表数量权值,可根据题意更改 }复杂度为sqrt(n)。原创 2020-04-28 22:26:23 · 264 阅读 · 0 评论 -
染色图(数论分块模板)
数论分块模板(sqrt(n))适用于|n / i|向下取余因为n/i一共有sqrt(n)个值所以时间复杂度为根号n //nl代表总的左边界,nr是总的右边界 for(long long l=nl,r;l<=nr;l=r+1){ r=min(n/(n/l),nr); long long t=n/l; //l代表当前块...原创 2020-01-22 22:47:36 · 321 阅读 · 0 评论 -
ACM-ICPC 2018 沈阳赛区网络预赛 J. Ka Chang
ACM-ICPC 2018 沈阳赛区网络预赛 J. Ka Chang题意:两个操作,1操作将深度为x的所有点加权值k,2操作询问x的子树的权值和。q<=1e5,n<=1e5。思路:可以考虑两种思路,第一种用树状数组维护每个dfs序对应点的权值,当操作1输入x,k时则把深度为x的所有点的所对应dfs序再在树状数组中都加k,然后查询子树x的权值和时即ask(out[x])-ask(...原创 2020-01-12 22:43:32 · 258 阅读 · 0 评论