分块
fyc_kabuto
一个蒟蒻程序员
展开
-
2724: [Violet 6]蒲公英
题目大意:不带修改的区间众数。 %%%clj大大:区间众数 分块,首先有个重要结论: 摘自clj论文。 分块做。 那么我们就预处理f[i][j],第i块~j块间的众数。 每次枚举最左边(右边)的数,与剩下的块的众数(已求出)比较一下谁更多,更新数组。(类似区间dp) 至于求区间内x出现次数,可以用数据结构,也可以二分下标求解。 int check(int x,int y,i原创 2017-07-12 14:41:24 · 198 阅读 · 0 评论 -
4815: [Cqoi2017]小Q的表格
题意: 对于n*n的数表,任意一个位置,需要满足: f(a,b)=f(b,a)f(a,b)=f(b,a)f(a,b)=f(b,a) b×f(a,a+b)=(a+b)∗f(a,b)b×f(a,a+b)=(a+b)*f(a,b)b×f(a,a+b)=(a+b)∗f(a,b) 每次修改一个位置,需要将相关位置全部修改且求前k行前k列的和。 题解: 将二式变化可得: f(a,a+b)a(a+b)=f(a,...原创 2019-01-03 11:09:43 · 156 阅读 · 0 评论 -
4815: [Cqoi2017]小Q的表格
题意: 对于n*n的数表,任意一个位置,需要满足: f(a,b)=f(b,a)f(a,b)=f(b,a)f(a,b)=f(b,a) b×f(a,a+b)=(a+b)∗f(a,b)b×f(a,a+b)=(a+b)*f(a,b)b×f(a,a+b)=(a+b)∗f(a,b) 每次修改一个位置,需要将相关位置全部修改且求前k行前k列的和。 题解: 将二式变化可得: f(a,a+b)a(a+b)=f(a,...原创 2019-01-03 11:09:43 · 179 阅读 · 0 评论 -
bzoj 4320: ShangHai2006 Homework
分块+并查集/分块原创 2017-11-01 08:05:26 · 326 阅读 · 0 评论 -
bzoj 4765: 普通计算姬
分块好题原创 2017-10-11 19:57:29 · 305 阅读 · 0 评论 -
bzoj 2741: 【FOTILE模拟赛】L
题意:在线询问区级最大异或和。题解:分块+可持久化trie。 第一次写可持久化trie,原来还有这种操作。 先求出前缀的异或和。那么原题就变成了在一段区间选两个数,异或值最大。 先考虑确定一个值的情况。 那另一个值就是在这段区间的数的二进制下的trie上尽量走相反的路线。 用可持久化trie就好,跟主席树差不多,自己YY的模板,贼慢。 然后分块求答案。f[i][j]f[i][j] 表示第原创 2017-08-29 12:39:36 · 400 阅读 · 0 评论 -
bzoj 5016: [Snoi2017]一个简单的询问
题意:求∑maxx=0get(l1,r1,x)∗get(l2,r2,x)\sum^{max}_{x=0}get(l1,r1,x)*get(l2,r2,x)题解:分块+线段树。 一开始傻傻的想分颜色块,然后被ozy大佬D飞了。 按位置分块。 f[i][j]f[i][j]表示第i块,和1~j的答案。 那么对于第i块与l,r的答案,就是f[i][r]−f[i][l−1]f[i][r]-f[i][l原创 2017-09-05 13:34:40 · 555 阅读 · 2 评论 -
2141: 排队
分块模板题。 在块内的暴力统计,每一块开一个树状数组。 我SB逆序对求法写错。 code: #include #include #include #include #include #include using namespace std; int n,pre[20010],tr[150][20010],num=0; int ri[150]; struct node{ int b,a,原创 2017-07-07 08:45:44 · 351 阅读 · 0 评论 -
4241: 历史研究
题目大意:区间内出现次数*权值最大的数。 与2724差不多:bzoj2724题解 主要check的时候返回num*a就行了。 卡时卡卡了好几次(雾) code: #include #include #include #include #include #include #include #define LL long long using namespace std; vector v[原创 2017-07-12 14:52:48 · 322 阅读 · 0 评论 -
codeforces1129D. Isolation
题意: 将一个序列分段,每段至多有kkk个数恰好出现一次,问方案数 题解: n2n^2n2dp很容易,当(l,r)(l,r)(l,r)满足条件时f[l−1]−>f[r]f[l-1]->f[r]f[l−1]−>f[r] 考虑怎么快速求出所有满足条件的fff的和 记录一下每种颜色最后出现位置和次后出现位置,可以将题意转化为区间加,为所有值<=k&...原创 2019-02-26 10:32:27 · 403 阅读 · 2 评论