cdoj1324暴力分块】的更多相关文章

#include <iostream> #include <cstdio> #include <algorithm> #include <cmath> using namespace std; typedef long long ll; ; int belong[maxn],l[maxn],r[maxn],block,num,n,q; ll a[maxn],Max[maxn]; void build(){ block=sqrt(n); num=n/block…
[CF896E]Welcome home, Chtholly 题意:一个长度为n的序列ai,让你支持两种操作: 1.l r x:将[l,r]中ai>x的ai都减去x.2.l r x:询问[l,r]中有多少ai=x. n,m<=100000,ai,x<=100000. 题解:先分块,对于每一块,我们用双向链表维护块内所有不同的ai的值(排好序的):对于每个ai的值,我们再用一个链表维护这个值在块内所有的出现位置. 对于操作1,将所有ai>x的数都减去x 等价于 先将所有ai<=…
卿学姐种花 题目连接: http://acm.uestc.edu.cn/#/problem/show/1292 Description 众所周知,在喵哈哈村,有一个温柔善良的卿学姐. 卿学姐喜欢和她一样美丽的花.所以卿学姐家的后院有很多的花坛. 卿学姐有\(n\)个花坛,一开始第\(i\)个花坛里有\(A[i]\)朵花.每过一段时间,卿学姐都会在花坛里种上新的花. 作为一个聪明的学姐,卿学姐的种花方式也是与众不同 , 每一次,卿学姐会在第\(x\)个花坛种上\(y\)朵花,然后在第\(x+1\)…
求大爷教线段树怎么写啊QAQ 只会写分块...一开始脑抽写成了O(NKlogN)还被CZL大爷嘲讽了一发T T f[i][j]表示在第i块中,模k为j的数有几个,然后每次修改的时候只需要打个标记,查询的时候直接加上标记查就行了 #include<iostream> #include<cstring> #include<cstdlib> #include<cstdio> #include<cmath> using namespace std; ;…
题意 题目链接 分析 首先明确 \(xor\) 运算和 \(\rm gcd\) 没有联系! 注意到一个数字取 \(\rm gcd\) 且保证每次取 \(\rm gcd\) 值都会变小的话,最多取 \(\log\) 次. 比较显然,如果每次都变小的话至少都除以了因子 \(2\) ,变为原来的二分之一. 所以考虑一个暴力分块,记录每一块的 \(\rm gcd\) G[i].异或和X[i].前缀异或和. 如果 \({\rm gcd}(lastgcd,G[i])=lastgcd\) ,那么直接在该块记录…
3343: 教主的魔法 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1172  Solved: 526[Submit][Status][Discuss] Description 教主最近学会了一种神奇的魔法,能够使人长高.于是他准备演示给XMYZ信息组每个英雄看.于是N个英雄们又一次聚集在了一起,这次他们排成了一列,被编号为1.2.…….N. 每个人的身高一开始都是不超过1000的正整数.教主的魔法每次可以把闭区间[L, R](1≤L≤R≤N)…
http://www.lydsy.com/JudgeOnline/problem.php?id=4765 很nice的一道题啊(可能是因为卡了n久终于做出来了 题意就是给你一棵带点权的有根树,sum(i)表示以i为根的这颗子树中所有节点的权值和.有两种操作,一种是修改某个点的权值,另一种是给出l,r,求sum(l)+sum(l+1)...+sum(r). 首先考虑一个简单的问题,如果单求其中一个sum(i),我们可以怎样做. 很明显我们画个图,我们可以看到每个点打上dfs序之后,每个sum就变成…
简化版题意 给出一个长为n的数列,以及n个操作,操作涉及区间开方(每个数都向下取整),区间求和,保证所有数都为有符号32位正整数. N<=50000 Solution 首先我们先思考: 一个有符号32位正整数最多只能被开方几次就会得到相同的值? \(Example\):\(2147483647=2^{31}-1\) 最多5次(由于是向下取整) 所以,我们将数列中的每一个数,都开方5次,复杂度为\(O(5n)\) 然后我们再来考虑如何分块 对于每一个块,我们可以打一个标记\(tag[i]\) 表示…
题意 算法 经验总结 代码 题意 不带修改,查询数列[1,n]中[l,r]内的出现正偶数次的数的个数, 数列中的数 <= 1e5, n <= 1e5, 强制在线 算法 ​ 查询的内容: 区间内出现正偶数次的数的个数. 这个内容不具有可合并性, 像区间众数一样…. (知道[l,mid]和[mid+1,r]中 的答案, 不能知道[l,r]中的答案) ​ 主席树没有想法….看来只能暴力了??? ​ 对!! 我们可以写一个O(nn−−√)O(nn)的暴力—分块!!! ​ 具体说, 我们可以先暴力 开个…
题目描述 给出一个长度为 n 的序列,要求支持如下两种操作: A  l  r  x :将 [l,r] 区间内的所有数加上 x : Q  l  r : 询问 [l,r] 区间的最大连续子段和. 其中,一个区间的最大连续子段和指的是:该区间所有子区间的区间和中的最大值(本题中子区间包括空区间,区间和为 0 ). 输入 第一行两个整数 n.m,表示序列的长度以及操作的数目. 之后的 m 行,每行输入一个操作,含义如题目所述.保证操作为  A  l  r  x  或  Q  l  r  之一. 对于 3…
洛谷P3396 哈希冲突 题目背景 此题约为NOIP提高组Day2T2难度. 题目描述 众所周知,模数的hash会产生冲突.例如,如果模的数p=7,那么4和11便冲突了. B君对hash冲突很感兴趣.他会给出一个正整数序列value[]. 自然,B君会把这些数据存进hash池.第value[k]会被存进(k%p)这个池.这样就能造成很多冲突. B君会给定许多个p和x,询问在模p时,x这个池内数的总和. 另外,B君会随时更改value[k].每次更改立即生效. 保证1<=p<n1<=p&l…
分块的的复杂度是带根号的.... 然后,它是一种暴力算法 简单来说就是优化过的暴力 分块算法会对一个序列(长度为N)进行划分,每一块最多有K个元素,这样就会分为N/K块: 一般K取sqrt(N),那么块数也有K+1 or K块 通常实现时,我们用belong[i]示第i个位置所属的块,对于每个块都进行信息维护. 单点修改时,我们一般先将对应块的标记下传,再暴力更新被修改块的状态 如果是区间 l,r 修改的话,对于被整块跨过的块直接打标记,两端剩余的部分暴力重构 至于询问操作,和区间修改类似,对于…
中文题面 这道题就是LightOJ某题的升级版 前段时间我是直接用√k前暴力后分块的处理方式,然后直接套个等差求和 这次看到了dalao的证明再次让我知道我好菜啊 在这里做下笔记,学习一下对于整除运算的分析方法 关于\([\frac{k}{i}]×i,i∈[1,n]\)的处理 令\(x∈[1,k],g(x)=[k/[k/x]],f(x)=k/x\) 有\(g(x) = [k/[f(x)]] ≥ [k/f(x)] = x\) 得到\(g(x) ≥ x\),换为底 \([k/g(x)]≤[k/x]\…
BZOJ 3343: 教主的魔法(分块+二分查找) 3343: 教主的魔法 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1172  Solved: 526[Submit][Status][Discuss] 这个题目为什么不能用线段树做事因为C的值不固定,如果用线段树来做,那么每一个C值要从新建一遍线段树,时间会爆炸的 add操作: 1.同一块暴力修改,然后重构 2.两端不完整的暴力修改重构,中间完整的块加标记 查询操作: 1.同一块暴力 2.两…
http://poj.org/problem?id=2887 题意:给出一个字符串,还有n个询问,第一种询问是给出一个位置p和字符c,要在位置p的前面插入c(如果p超过字符串长度,自动插在最后),第二种询问是给出一个位置p,查找第p个位置的字符(p保证合法). 思路:暴力分块.一开始建成块之后,每次插入就在每个块的字符串插入字符,因为询问最多只有2000个,所以就算极端情况也不会超时. 注意:sz和cnt其中一个要向上取整.用string类会超时. #include <cstring> #in…
题目 :  链接 :https://loj.ac/problem/6285 题意:给出一个长为 n的数列,以及 n个操作,操作涉及询问区间的最小众数. 思路:虽然这不是一道 回滚莫队题,就是 暴力分块 的题, 但是 还是 可以用回滚莫队 写滴,好像大部分题解都是 暴力分块. #include<bits/stdc++.h> #define LL long long #define ULL unsigned long long #define rep(i,j,k) for(int i=j;i<…
蒲公英 暴力分块思想.分块的思想与莫队相同.它能将时间和空间复杂度均摊XD belong表示所属区块,num维护区间颜色出现次数,maxx维护区间max值.查询时只需要比较两端的区块即可. #include<iostream> #include<cstdio> #include<algorithm> #include<utility> #include<cstring> #include<cctype> using namespace…
Description 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会像你发布如下指令: 1. Q L R代表询问你从第L支画笔到第R支画笔中共有几种不同颜色的画笔. 2. R P Col 把第P支画笔替换为颜色Col.为了满足墨墨的要求,你知道你需要干什么了吗? Input 第1行两个整数N,M,分别代表初始画笔的数量以及墨墨会做的事情的个数.第2行N个整数,分别代表初始画笔排中第i支画笔的颜色.第3行到第2+M行,每行分别代表墨墨会做的一件事情,格…
Description Astronomers often examine star maps where stars are represented by points on a plane and each star has Cartesian coordinates. Let the level of a star be an amount of the stars that are not higher and not to the right of the given star. As…
4.14 网络流专项测试 先看T1,不会,看T2,仙人掌???wtf??弃疗.看T3,貌似最可做了,然后开始刚,刚了30min无果,打了50分暴力,然后接着去看T1,把序列差分了一下,推了会式子,发现是傻逼费用流,然后码码码,码完秒过大样例,觉得比较稳,又肉眼查了会错,就放了.然后接着推T3,发现我会做一个限制条件的,貌似和T1差不多,然后就写了,感觉能多骗点分,之后看了看T2,发现30裸树剖,30裸最大流,然后码码码.最后查了会错,发现T1没开long long,赶紧改了.100+44+63=…
Preface 多校第二场,依靠罚时优势打到了校内的Rank 2 暴力分块碾标算系列 T4 Game 题目大意:在一个数集\([1,n]\)中两个人轮流选择其中的一个数,并从数集中删去这个数所有约数.先将所有数删去的人获胜. 比赛的时候手玩了\(n<=5\)的情况发现TM的怎么总是先手赢啊,然后就认为这是个先手必胜的游戏然而真的是这样 赛后听法老讲了真正的做法,分假定情况讨论: 假设这个状态先手必胜,那就让先手胜. 假设这个状态后手必胜,那么先手把\(1\)取走之后相当与把这个必败态扔给了后手(…
A 判断下5个名字出现了几次.pre数据巨弱,就这么一水题在std测刷掉了非常多的人.. /** @Date : 2017-10-24 16:04:41 * @FileName: A.cpp * @Platform: Windows * @Author : Lweleth (SoungEarlf@gmail.com) * @Link : https://github.com/ * @Version : $Id$ */ #include <bits/stdc++.h> #define LL lo…
Description 给出两个01序列\(A\)和\(B\) 要求回答\(q\)个询问每次询问\(A\)和\(B\)中两个长度为\(len\)的子串的哈明距离 ​ 哈明距离的值即有多少个位置不相等 ​ \(1 \le |A|,|B| \le 2*10^5\) ​ \(1 \le q \le 4*10^5\) ​ 保证输入合法,序列下标从0开始 Solution ​ 大暴力分块,记录一下思想 ​ 题解做法比较繁琐 ​ 先求出每一个位置开始长度为32的序列状态,压进一个unsigned int ​…
似乎该写题解了.今天模拟ACM,10道题(本来还有2道被删了),9道都来自BZOJ,中间我做过2道.那么说,今天Solv.便大大增多了(但还是不如强大的Amphetamine). 题单及一句话题解如下: A.HDU 3652 B-number(数位DP):当时硬没有想到去存13的余数,一直想着13倍数的判断法则.最后无奈,只有打表(原则上可以AC),但是vjudge与HDU允许的cpp文件大小上限不同,导致vjudge卡打表(不想再调) B.BZOJ 4152 [AMPP2014]The Cap…
快考试了,把我以前写过的题回顾一下.Noip2007 树网的核:floyd,推出性质,暴力.Noip2008 笨小猴:模拟Noip2008 火柴棒等式:枚举Noip2008 传纸条:棋盘dpNoip2008 双栈排序:将复杂条件转化为简单约束,二分图染色判断可行性,模拟.Noi2010 能量采集:常见套路,求:ΣΣgcd(i,j),设t = gcd(i,j),能算出gcd=t的点对有(n/t) * (m/t)个,然后利用容斥原理减去2t,3t,……,kt的,倒序枚举.Noip2009 潜伏者:模…
题目很好明白,然后实现很神奇.首先如果考虑并查集的话,对于删边和加边操作我们无法同时进行.然后暴力分块的话,复杂度是O(n sqrt n) ,不是很优.于是看了题解,发现了线段树的神奇用途. 我们维护每个矩形四个顶点的六个变量,分别是: g[0]:表示第一行左右端点的连通性. g[1]:表示第二行左右端点的连通性. g[2]:左上端点和左下端点的连通性. g[3]:右上端点和右下端点的连通性. g[4]:左上端点和右下端点的连通性. g[5]:左下端点和右上端点的连通性. 这六个变量做好之后就可…
传送门 题目要求求出给定区间内编号最小的众数,强制在线. 虽然说这是个黑题……不过我们可以用暴力分块解决它.首先先对所有数离散化,这个不影响众数.我们先预处理出每个数在前i个块内出现了多少次,再预处理出块i到块j内最小众数是谁.前者很好预处理,后者的话,我们只要固定i,之后向后枚举,每次新加入一个数的时候就比较出现最多次的元素来更新当前众数.如果到了块末尾,就更新块的答案. 查询的时候,整块的我们直接去计算过的答案,之后对于每一个出现在零散位置的元素,我们记录下来,之后计算他们在整块中出现了多少…
题目描述 设d(x)为x的约数个数,给定N.M,求 \sum^N_{i=1}\sum^M_{j=1}d(ij)∑i=1N​∑j=1M​d(ij) 输入输出格式 输入格式: 输入文件包含多组测试数据.第一行,一个整数T,表示测试数据的组数.接下来的T行,每行两个整数N.M. 输出格式: T行,每行一个整数,表示你所求的答案. 输入输出样例 输入样例#1: 复制 2 7 4 5 6 输出样例#1: 复制 110 121 说明 1<=N, M<=50000 1<=T<=50000 有一个…
A:Banks 代码: #include<bits/stdc++.h> using namespace std; #define Fopen freopen("_in.txt","r",stdin); freopen("_out.txt","w",stdout); #define LL long long #define ULL unsigned LL #define fi first #define se sec…
又是一年云参营. 所以一起刷省选题吧. LOJ2028 「SHOI2016」随机序列 题目链接. 简要社论 发现+和-可以互相抵消,于是有贡献的时候一段前缀的乘积.设\(s[i]=\prod_{j=1}^i a[j]\),则答案为\(2\sum_{i=1}^{n-1}3^{n-i}s[i]+s[n]\). 使用线段树维护前缀积就可以了.code LOJ2038 「SHOI2015」超能粒子炮・改 题目链接 简要社论 \[ \begin{aligned} F(n,k)&=\sum_{i=0}^k\…