
分块
twh233
嘻嘻
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
#6277. 数列分块入门 1
题目链接 //第一行输入一个数字 n。////第二行输入 n 个数字,第 i 个数字为 ai,以空格隔开。////接下来输入 n 行询问,每行输入四个数字 opt l r c,以空格隔开。////若 opt=0,表示将位于 [l,r] 的之间的数字都加 c。////若 opt=1,表示询问 ar 的值(l 和 c 忽略)。#pragma GCC optimize("Of...原创 2018-09-16 20:27:37 · 230 阅读 · 0 评论 -
bzoj1086 王室联邦 (树上分块
题目链接 题解:思想上是深搜+栈,每当栈中元素达到b个,就分成一个块。然后最后会剩下部分,分到最后一个块中。 /// .-~~~~~~~~~-._ _.-~~~~~~~~~-./// __.' ~. .~ `.__/// .'//...原创 2018-09-18 16:36:51 · 257 阅读 · 0 评论 -
#6285. 数列分块入门 9
题目链接 //第一行输入一个数字 n。////第二行输入 n 个数字,第 i 个数字为 ai ,以空格隔开。////接下来输入 n 行询问,每行输入两个数字 l r,以空格隔开。////表示查询位于[l,r]的数字的众数 #pragma GCC optimize("Ofast")#pragma comment(linker, "/STACK:102400000,1024...原创 2018-09-16 20:45:02 · 395 阅读 · 0 评论 -
#6284. 数列分块入门 8
题目链接用flag[i]标记第i块是否被修改过,每次对a[i]进行操作时,对其进行更新。更新时将flag[i]重置为-1 //第一行输入一个数字 n。////第二行输入 n 个数字,第 i 个数字为 ai ,以空格隔开。////接下来输入 n 行询问,每行输入三个数字 l r c,以空格隔开。////表示先询问位于[l,r]的数字有多少个是c,再把位于[l,r]的数字...原创 2018-09-16 20:43:36 · 241 阅读 · 0 评论 -
#6283. 数列分块入门 7
题目链接分别用mt[i],ad[i]代表块乘值,块加值。 更新a[i]值时,a[i]=(a[i]*mt[x]+ad[x])%mod;另外将mt[x],ad[x]重置。(这里x指第x块) 每次对a[i]进行操作时需要对a[i]更新 //第一行输入一个数字 n。////第二行输入 n 个数字,第 i 个数字为 ai ,以空格隔开。////接下来输入 n 行询问...原创 2018-09-16 20:41:36 · 206 阅读 · 0 评论 -
#6282. 数列分块入门 6
题目链接插入值过后整个分块已经不是平均分配了,可能导致某一块过大,需要重新build,将块元素平均。//第一行输入一个数字 n。////第二行输入 n 个数字,第 i 个数字为 ai ,以空格隔开。////接下来输入 n 行询问,每行输入四个数字 opt l r c,以空格隔开。////若 opt=0,表示在第 l 个数字前插入数字 r (c 忽略)。////若 opt=...原创 2018-09-16 20:38:38 · 270 阅读 · 0 评论 -
#6281. 数列分块入门 5
题目链接 用check来判断整个块是0是1,如果是0或者是1,就不用再对这个块里的元素开方了。对一个数不断开方一定会缩小到0或者1。//第一行输入一个数字 n。////第二行输入 n 个数字,第 i 个数字为 ai,以空格隔开。////接下来输入 n 行询问,每行输入四个数字 opt l r c,以空格隔开。////若 opt=0,表示将位于 [l,r] 的之间的数字...原创 2018-09-16 20:36:48 · 203 阅读 · 0 评论 -
#6280. 数列分块入门 4
题目链接用add数组代表一个块的加值,用add[i]*block,i代表第i块,block代表每个块的总数即可算出一块的加值。//第一行输入一个数字 n。////第二行输入 n 个数字,第 i 个数字为 ai,以空格隔开。////接下来输入 n 行询问,每行输入四个数字 opt l r c,以空格隔开。////若 opt=0,表示将位于 [l,r] 的之间的数字都加 c。/...原创 2018-09-16 20:34:20 · 124 阅读 · 0 评论 -
#6279. 数列分块入门 3
题目链接 此题同样用seg存入每个块的信息排序,不过需要不断更新数据。询问答案时二分 //第一行输入一个数字 n。////第二行输入 n 个数字,第 i 个数字为 ai,以空格隔开。////接下来输入 n 行询问,每行输入四个数字 opt l r c,以空格隔开。////若 opt=0,表示将位于 [l,r] 的之间的数字都加 c。////若 opt=1,表示...原创 2018-09-16 20:31:39 · 181 阅读 · 0 评论 -
#6278. 数列分块入门 2
题目链接 根据题意可以相出至少要将每一个块的元素排序,那么用seg存下每个块的信息进行排序。询问答案时二分即可得出答案。 //第一行输入一个数字 n。////第二行输入 n 个数字,第 i 个数字为 ai,以空格隔开。////接下来输入 n 行询问,每行输入四个数字 opt l r c,以空格隔开。////若 opt=0,表示将位于 [l,r] 的之间的数字都加 ...原创 2018-09-16 20:29:43 · 259 阅读 · 0 评论 -
牛客练习赛10 E.数列查找 区间出现次数第k1小的数中值第k2小的数
题目链接一看数据,大概率是莫队。往莫队方向想了之后,发现我们需要在短时间内找出出现次数第k1小的数并且还要找到值第k2小,看了题解才知道分块即可。/// .-~~~~~~~~~-._ _.-~~~~~~~~~-./// __.' ~. .~ `.__/// ...原创 2018-10-09 11:06:02 · 382 阅读 · 0 评论