分块
文章平均质量分 79
1
ygmjsjdboy
这个作者很懒,什么都没留下…
展开
-
【分块】铃铛计数问题
应该算分块的好题,因为我没想到 题目 求树上∑i=lrsi\sum_{i=l}^rs_i∑i=lrsi,其中sis_isi表示子树权值和,带修 题解 O(nn)O(n\sqrt n)O(nn) 分块,一个维护原标号,一个维护dfndfndfn序 修改时,更改第一种块需要用到dpi,kdp_{i,k}dpi,k表示iii标号会在第kkk块中计算几次。用第二种块维护散点权值,将原本单点修改变为区间修改单点查,依次做到之后查询O(1)O(1)O(1) 查询时,第一种块爆加,散块在第二种块里查 #incl原创 2020-08-01 15:23:37 · 167 阅读 · 0 评论 -
【分块】
分块! 分块就是把一段数分成几块来做。。。 一般用来解决区间操作和询问。 假设这段数有N这么长,把它分成S块,那么每块大概就有N/S个数。 利用预处理后块的值,达到询问时将M大小的区块询问变为nS+2N/S(即区间内包含块+左右两边散装) 一般情况下,当S=sqrt(N)时,时空复杂度最优。 一,分 void fenkuai() { sn=sqrt(n);sg=0; if(sn*sn&l...原创 2019-09-20 21:06:22 · 577 阅读 · 0 评论 -
【分块】之【数列分块入门】
由于本篇主要讲分块,其他算法可能更优但我不加赘述 注释:N表示n,m表示块数即sqrt(n) 一.数列分块入门1 loj6277 题意简述: 区间加法,单点询问 fenkuai(简称fk)[i]表示整块中需要加的数; 处理时,整块加法:fk[i]+=c; 散块加法:将整块fk[i]值赋回num[j],然后将需要的num[j]+=c; #include<bits/stdc++.h> #d...原创 2019-09-21 08:07:28 · 166 阅读 · 0 评论