有关分块入门的总结
hzwer大佬(黄学长)弄的一些有关分块运用的一些题目的总结,表示打的很艰辛啊~~(附代码)
Larry1118
这个作者很懒,什么都没留下…
展开
-
数列分块入门 1 总结
Question: 这题分块~~(标题好像说的很明确的说)~~ 我们设一个block[]表示第i位属于哪个块。 我们便可以这样子打: st=sqrt(n); for (int i=1;i<=n;i++) bl[i]=(i-1)/st+1; 然后,对于opt==0 我们发现它除了整个块,但两边可能会有一点点的多出来(就是不够一整个块) 这两边我们可以暴力搞,而中间的,我们便存一个b[]...原创 2019-01-24 21:13:27 · 127 阅读 · 0 评论 -
数列分块入门 2 总结
这题,呜呜呜。。。。 我™改了™的好几天啊啊啊啊啊!!!!! 这题依旧分块。原序列设为a[] 对于每个块,我们可以用另一个数组排序(在此设为d[])。 另一个!!! (我不知道为什么,将原序列记录了位置在排序™还是错了。。。) 然后,还是分类讨论。 opt==0 分成三块。 1:l所在的凸出来的那一部分,暴力搞,然后将a[]中l的块暴力赋给d[],并排序。 2:r所在的凸出来的那一部分,方法同上...原创 2019-01-25 21:47:29 · 194 阅读 · 0 评论 -
数列分块入门 3 总结
和入门 2很像。。。 就是求答案有点点区别而已。。。 左右凸出来的依旧暴力,而中间的依旧二分,然后将这些小于c的值取min即可。 上标: #include<cstdio> #include<algorithm> #include<cmath> using namespace std; int a[100010],d[100010],n,b[321]; int ...原创 2019-01-25 22:03:39 · 196 阅读 · 0 评论 -
数列分块入门 4 总结
这题变得容易了。。。 只要记录一下每个块的总和即可。 左右两边凸出来的暴力搞就可以了。 上标: (感觉别人有毒吧,我跑1000ms+,他/她™只跑100ms+。。。 ) #include<cstdio> #include<algorithm> #include<cmath> #define ll long long using namespace std; i...原创 2019-01-26 07:25:02 · 149 阅读 · 0 评论 -
数列分块入门 5 总结
这题我得着重给一给数据范围,嗯嗯 数据范围!!! 哈哈,我们发现a[i]最大是231-1。 好,我们开开方先: 2147483647 46340(取整的) 215 14 3 1 1 … 我们再试几个数,发现最终会变成0或1,然后就不会在变了。 所以,它最多会开方5次,然后便相当于不变了。 这样子,我们一开始全部暴力改。 每当一个块的全部a[]都变成了0或1的话,就标记一下,表示下次不用再搞了。...原创 2019-01-26 21:25:17 · 401 阅读 · 0 评论 -
数列分块入门 6 总结
Question 这题新加了一个插入操作,然后就是询问了,还好没有修改。。。 网上的大都是什么vector的,都是STL。。。(但是身为蒟蒻的我还不会STL(┭┮﹏┭┮)) 所以我就将这输入用指针来存,然后插入就找到l的位置,然后指针插入。 反正都是随机数据嘛~(应该不会遇到特殊情况) 就这样我卡过了。。。 上标: #include<cstdio> #include<cmath...原创 2019-02-19 18:38:56 · 215 阅读 · 0 评论 -
数列分块入门 7 总结
这题只要做对了前面的东东,这题肯定能做对的。(* ̄︶ ̄) 只要设m[i]表示第i块整体要乘的数,p[i]表示第i块整体要加的数即可。 记得!在乘c的时候要把p也给乘了(自己想想为什么) 还有,在做左右两边凸出来的东西的话,要先把整块的m[bl[i]],p[bl[i]]都附上去,然后清空(m[bl[i]]=1,p[bl[i]]=0),否则会有意想不到的错误!!! 上标: #include<c...原创 2019-01-28 21:10:54 · 226 阅读 · 0 评论 -
数列分块入门 8 总结
这题我们只需设个check[i]表示第i块是否都为一个数,b[i]表示第i块变成的数。 然后暴力搞就可以了。 至于为什么,我们看看hzwer大佬(黄学长)的解释吧: 上标: #include&lt;cstdio&gt; #include&lt;algorithm&gt; #include&lt;cmath&gt; #define N 100010 using namespace std;原创 2019-01-28 22:14:18 · 326 阅读 · 0 评论