分块
FSYo
我不去想是否能够成功,
既然选择了远方,
便只顾风雨兼程
展开
-
【省选模拟】20/04/20 music (分块)(卡空间)
题意: 每个点的权值为向后 mmm 个中 ≤x\le x≤x 的个数,给定 l,r,xl,r,xl,r,x 求最小权值,强制在线,空间 n≤2e5,70MB,5sn\le 2e5,70MB,5sn≤2e5,70MB,5s 如果不强制在线的话,考虑按 aia_iai 加入答案算贡献,线段树维护就做完了 如果不卡空间的话,主席树就做完了 听大神 ldxldxldx 讲了过后就会了下面空间 O...原创 2020-04-20 23:25:15 · 179 阅读 · 1 评论 -
「ZJOI2017」字符串 (Hash)(分块)(线段树)
LOJLOJLOJ 传送门 题解: 我们考虑用线段树维护最小后缀的出现位置,那么需要考虑如何合并两个区间 发现最小后缀可能是前面区间的某一个后缀加上后面的一整个字符串,注意这个某一个后缀并不一定是前面区间的最小后缀,于是我们需要维护可能后缀的集合。 定义:一个 iii 的 “kkk-后缀” 指的是字符串 S[i...k]S[i...k]S[i...k](以下用 SiS_iSi 表示),一个 i...原创 2020-02-15 19:29:58 · 403 阅读 · 0 评论 -
CSP-S 模拟 迷雾华光 (树分块)(虚树)(主席树)(树上莫队)
题意:给一棵树,每个节点有 3 个权值,问路径众数,次数相同以最小的为众数 n≤8e4,q≤1e5,512MB,10sn\le 8e4,q\le1e5,512MB,10sn≤8e4,q≤1e5,512MB,10s 首先 3 个权值就是故意来累加你常数的东西,既然开了 10s10s10s,就会猜到肯定是根号算法 离线算法 首先考虑离线就是一个树上莫队,但是由于树上莫队按 dfsdfsdfs 序到...原创 2019-11-08 19:48:09 · 309 阅读 · 0 评论 -
NOI.AC CSP-S 模拟 Round 3 简要题解
比赛链接 T1 一看就是整除分块的形式,如何整除分块 发现对于 j≤ij\le\sqrt ij≤i,⌊ij⌋\left \lfloor \frac{i}{j }\right \rfloor⌊ji⌋ 对应这唯一的值,暴力乘 对于 j≥sqrtij\ge sqrt ij≥sqrti,⌊ij⌋\left \lfloor \frac{i}{j }\right \rfloor⌊ji⌋ 的值可能有一段区...原创 2019-10-20 16:41:41 · 289 阅读 · 0 评论 -
利用分块的思想解决的问题
BZOJ2741 L 首先有个 m * n logn 的做法, 就是暴力枚举右端点, 然后可持久化trie来查, 考虑如何优化 n 那么小是不是可以预处理一些东西, 我们又想到了分块 类似分块的套路, 可以预处理 f[i][j] , 表示第i块到第j块的答案 综合空间以及时间的考虑, 我们发现可以直接处理 f[i][j] 表示 第i块的起点到 j 的答案 然后询问可以直接查, 剩下的...原创 2019-07-08 23:10:01 · 225 阅读 · 0 评论 -
P4135 作诗 [分块]
传送门 1. 预处理块l到块r 之间的答案, 可以nsqrt(n) 预处理 2. 预处理颜色c在每一块之间的个数, 并求前缀和, 这样我们就能O(1)求每个数在块l到r之间的出现次数,可以O(c sqet(n))预处理 3. 对于询问, 中间的块之间用预处理的答案, 然后对于两头多出来的2sqrt(n)个数, 我们暴力处理它们出现次数, 并查询它在中间的块的出现次数, 发现最多查询2sqrt...原创 2019-02-16 14:27:54 · 232 阅读 · 0 评论 -
P4137 Rmq Problem / mex [莫队+分块]
传送门 对于每一个数字 , 再对数字进行分块 , 如果块的值 = 块的长度 , 那么这些数字就是选了的 这样加上莫队就是O(sqrt(n)) 修改 O(sqrt(n)) 查询 #include<bits/stdc++.h> #define N 200050 using namespace std; int n,m,a[N],ans[N],pos[N],cnt[N]; int ...原创 2018-12-13 21:35:18 · 150 阅读 · 0 评论 -
P2801 教主的魔法 [分块]
传送门 整块打tag , 单块暴力修改 另外开一个数组b 为一块内的a排序后的数组 显然整块修改不会影响排序 , 查询时加上tag就可以 暴力修改a数组 然后重新赋值再排序 , 这样是O()的 查询时块外暴力 , 块内二分就可以了 #include<bits/stdc++.h> #define N 1000050 #define LL long long using ...原创 2018-12-12 20:11:26 · 165 阅读 · 0 评论 -
hash冲突[分块]
传送门 首先我们考虑暴力开一个数组f[i][j] 表示模i余j的位置上数的和 但是数组开不下 , 我们发现当i大于sqrt(n)时 , 只需要sqrt(n)次就可以暴力加 并且当i小于sqrt(n)时 , 就可以预处理 , 修改时暴力修改就可以了 #include<bits/stdc++.h> #define N 150050 #define M 405 #define ...原创 2018-11-26 22:51:27 · 142 阅读 · 0 评论 -
磁力块[分块]
传送门 题解原网 遵从大段一起跳,小段暴力跳 #include<bits/stdc++.h> #define N 250050 #define LL long long using namespace std; LL X0,Y0,pl,rl,n,len,vis[N]; LL L[N],R[N],D[N],tot,q[N]; struct Node{LL d,r,m,p;...原创 2018-11-15 22:11:03 · 294 阅读 · 0 评论