分治(二分)
Master.Yi
学习他人,提升自己;
提升自己,帮助他人。
展开
-
20200810 T2 Dispatch Money【区间逆序对,分治套分治解决决策单调性】
题目描述给一个长度为 nnn 的排列 aia_iai,把它划分为若干段,每划分一段有 XXX 的代价,划分完后段内需要排序,代价为区间逆序对个数。求最小总代价。n≤300000,1≤X≤109n\le 300000,1\le X\le 10^9n≤300000,1≤X≤109时限 5s.题目分析暴力 O(n2)O(n^2)O(n2) DP:fi=fj+inversion_pair(j+1,i)f_i=f_j+inversion\_pair(j+1,i)fi=fj+inversion_pair原创 2020-08-10 19:12:28 · 449 阅读 · 0 评论 -
CF1375H Set Merging
这篇题解写的真是太好辣!虽然实际上是我自己脑补的看题解之前先看清楚题意。。原序列是个排列,不是有序的,要把 [l,r][l,r][l,r] 位置的集合合并出来,合并要保证值域有序。对值域分块,然后将每一块中位置在 [l,r][l,r][l,r] 的段提取出来,依次合并。这一步合并次数是 nqB\frac {nq}BBnq 的。然后考虑怎么把值域块内的每个位置连续段合并出来,因为位置连续段的值域并不一定连续,再次对值域分治,先合并出值域在 [L,M],[M+1,R][L,M],[M+1,R][L,M原创 2020-07-20 17:38:54 · 189 阅读 · 0 评论 -
模拟赛20200213【增量求第n小,三角剖分分治最短路,树上路径中位数之和】
T1:n≤6500n\le6500n≤6500题解:因为10i+1/2i&1=010^{i+1}/2^i\&1=010i+1/2i&1=0, 10i/2i&1=110^i/2^i\&1=110i/2i&1=1,所以10k10^k10k的二进制表示的末尾一定有kkk个0所以可以记录长度为lenlenlen的所有合法串及其对应的二进制表示,...原创 2020-02-13 22:36:21 · 263 阅读 · 0 评论 -
省选模拟赛20200129 T1 (分割字符串使最大字典序子串最小)【二分,贪心,后缀数组】
题目描述:长度为nnn的字符串sss,至多可以分成mmm段,使所有段的所有子串中字典序最大的子串字典序最小,输出这个串。n≤105,m≤15n\le10^5,m\le15n≤105,m≤15题目分析:事实告诉我们最大值最小真的可以二分。。先求出后缀数组,得到本质不同的子串个数。然后二分答案,每次先通过后缀数组求出第mid小的子串,然后贪心进行检验。检验的时候,从后往前贪心,每次加入一...原创 2020-01-29 22:30:39 · 338 阅读 · 0 评论 -
Codeforces364E Empty Rectangles【分治】
题目描述:给一个n*m的01矩阵,问有多少个子矩阵满足恰有k个11<=n,m<=2500,0<=k<=6题目分析:分治真是太强了%%%这种矩形问题,计算方法通常是要定一条边,然后两边限制统计方案。考虑将矩形(1,n,1,m)划分(比如说按水平线一分为二,设mid=(1+n)/2),预处理出第iii列到第jjj列恰有ttt个1往上最多能延伸到哪,以及往下最多能延伸...原创 2019-10-27 19:45:09 · 210 阅读 · 0 评论 -
BZOJ1181 IZBROI选举【二分+DP】
题目描述:共有V张票,每一票只可能投给N个政党中的一个。共有M个席位。设编号为i的政党最终的得票为Vi,则议会中的席位按如下规则分配:1、将得票数小于总选票的5%的政党剔除。2、初始时议会为空,每个政党都只有0个席位。3、对于每个政党P,计算一个参数Qp = Vp / (Sp + 1),Vp为政党P的最终得票,Sp为政党P当前已经在议会拥有的席位。4、给Qp最大的政党分配一个席位,如果有...原创 2019-10-16 16:11:52 · 259 阅读 · 0 评论 -
BZOJ2067: [Poi2004]SZN【贪心DP】
题目描述:n个点的树,问最少需要多少条线才能覆盖所有边,以及最少用线的情况下最长线的最短长度。一条边只能被覆盖一次,线与线之间点可以相交。n<=10000题目分析:我们先不考虑最少用线。一个点iii(非根节点),由于它的父亲要被覆盖,所以最少用线的情况下这条线一定可以往其中一个儿子延伸,其余儿子连到自己的这条线就要两两配对,用d[i]d[i]d[i]表示iii的度数,则iii的贡...原创 2019-10-15 13:17:33 · 172 阅读 · 0 评论 -
BZOJ3237: [Ahoi2013]连通图【分治+回退并查集(类似于线段树分治)】
题目描述:数据范围不是题面中的,是这个:N<=100000 M<=200000 K<=100000题目分析:查询连通性可以用并查集的size,如果siz[find(1)]==总点数则图连通,反之不连通。然而并查集并不支持删边,但是它支持加边以及按加边顺序回退,这就让我们想到了线段树形状的可回退结构:分治。设cdq(l,r)cdq(l,r)cdq(l,r)表示解决区间...原创 2019-10-06 21:38:09 · 186 阅读 · 0 评论 -
BZOJ3636: 教义问答手册【分治】
题目描述:长度为nnn的序列,∣a[i]∣≤10000|a[i]|\le10000∣a[i]∣≤10000,QQQ个询问,询问区间[l,r][l,r][l,r]中,取若干个长度为LLL的段,使它们的和最大,输出最大值。n,Q≤100000,L≤50n,Q\le100000,L\le50n,Q≤100000,L≤50,注意LLL是个定值,不随询问变化。题目分析:容易想到O(n2)O(n^2)...原创 2019-10-06 21:07:16 · 255 阅读 · 0 评论 -
BZOJ3745: [Coci2015]Norma【分治】
题目描述:Mod 109题目分析:分治真是强大。。计算[l,r][l,r][l,r]的答案,只需要考虑怎么算跨过midmidmid的答案,其余的分治即可。枚举左端点i:mid→li:mid\rarr li:mid→l,记[i,mid][i,mid][i,mid]的最小值为mnmnmn,最大值为mxmxmx,找到右边最后一个≥mn\ge mn≥mn的位置jjj,以及最后一个≤mx\le m...原创 2019-10-06 20:47:44 · 164 阅读 · 0 评论 -
BZOJ3262: 陌上花开【三维偏序】
题目描述:有n朵花,每朵花有三个属性:花形(s)、颜色©、气味(m),用三个整数表示。现在要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量。定义一朵花A比另一朵花B要美丽,当且仅Sa>=Sb,Ca>=Cb,Ma>=Mb。显然,两朵花可能有同样的属性。需要统计出评出每个等级的花的数量。第一行为N,K (1 <= N <= 100,000, 1 <...原创 2019-10-05 15:51:17 · 215 阅读 · 0 评论 -
BZOJ4170: 极光【曼哈顿转切比雪夫距离+离线二维数点(排序+cdq分治+树状数组)】
题目描述:天空中出现了许多的北极光,这些北极光组成了一个长度为n的正整数数列a[i],远古之魔书上记载到:2个位置的graze值为两者位置差与数值差的和:graze(x,y)=|x-y|+|a[x]-a[y]|。要想破解天罚,就必须支持2种操作(k都是正整数):Modify x k:将第x个数的值修改为k。Query x k:询问有几个i满足graze(x,i)<=k。询问不仅要...原创 2019-10-05 15:43:17 · 197 阅读 · 0 评论 -
CSP-S模拟赛20190921 T3 御神渡【分治求异色点之间的凸包】
题目描述:N≤105N\le10^5N≤105题目分析:边(i,j)(i,j)(i,j)的权值是Ci+Cj−Ai∗AjC_i+C_j-A_i*A_jCi+Cj−Ai∗Aj,本质上是最小生成树问题。但是n≤105n\le10^5n≤105。不难用反证法证明一个集合向外的所有边中最小的边一定在最小生成树中,基于这个基本性质,我们考虑与一个点相连的所有边中的最小值。令z=Ci+Cj...原创 2019-09-22 22:22:54 · 338 阅读 · 0 评论 -
CQBZ2444 帮忙
帮忙题目描述【题目背景】在高考研讨会上,随着 z 同学对 zn 了解的深入,发现她不仅是一个善良的女孩子,还 是一个很勤劳的女生,哇塞,这样棒的女生在 21世纪真是太难遇到了,要是可以娶到这样的 女生,小 z 陷入了无限的 yy 中高考研讨会进入了尾声,校长一声令下,搬椅子喽~~~~,只见平时道貌岸然的那些所谓的好学生们一听要干活全跑了,shit~~!!操场上只剩 zn 与 z 同学...原创 2018-11-06 22:35:47 · 440 阅读 · 0 评论 -
HDU 3480 Division 【斜率优化/WQS二分】
题目描述题目链接n个数分成m堆,每堆的贡献是(最大值-最小值)^2,求最小贡献,n&amp;lt;=10000,m&amp;lt;=1000题目分析先从小到大排序,然后妥妥的O(nm)斜率优化dp但是我(蒟蒻)不小心想到了WQS二分,然后满怀激动地觉得可以做到O(nlogm)于是:怎么会WA??!!想一想,选的堆数越多,答案肯定越小,按道理讲函数图像应该是个下凸包,只需要二分出每选一堆会加上的...原创 2019-01-04 15:14:24 · 325 阅读 · 0 评论 -
BZOJ 3110: [Zjoi2013]K大数查询【整体二分】
整体二分,加一个维护区间求和注意一下mid的划分,跟第k小是有区别的l~mid是左边,mid+1~r是右边,找>mid的数的个数讨论的时候不注意一不小心就WA到飞起~#include<cstdio>#include<cstring>#include<cctype>#include<algorithm>#define maxn 5...原创 2019-03-08 11:37:46 · 164 阅读 · 0 评论 -
BZOJ 3924: [Zjoi2015]幻想乡战略游戏 【点分树】
BZOJ传送门洛谷传送门题目分析:要计算所有点到一个点的带权距离和。先考虑如何计算:每次找重心,构造出点分树,对于树中的每个节点维护三个信息:sv[i]sv[i]sv[i]:以iii为根的子树的点权和sd[i]sd[i]sd[i]:以iii为根的子树中每个点到iii的带权距离和sf[i]sf[i]sf[i]:以iii为根的子树中每个点到iii(在点分树中)的父亲的带权距离和查询点...原创 2019-03-20 22:13:07 · 160 阅读 · 0 评论 -
BZOJ 2527: [Poi2011]Meteors 【整体二分+树状数组】
题目传送门似乎是个整体二分板题(然而是300000的nlog2n。。)?先把前mid场陨石雨插到树状数组里面。对每个国家开个vector,统计它收集到的陨石数(注意到轨道的总数是O(n)的)才打几道整体二分,注意几个坑点:分到右边的询问要减去左边对它的贡献。复制的tmp数组的下标不能用tmp[0],因为分左右的时候会被改,要用局部变量。Code:#include<cstdio...原创 2019-03-25 09:07:27 · 180 阅读 · 0 评论 -
BZOJ 4009: [HNOI2015]接水果 【整体二分+矩形覆盖(dfs序解决树上路径包含问题)】
BZOJ传送门洛谷传送门题目分析:乍一看路径包含,什么玩意??然后就被dalao的分析震惊了居然可以转化成dfs序,判断x,y路径在盘子子树内、子树外。若x与y不成祖先-孩子关系,则包含它的路径u-v满足:起点在x的子树里,且终点在y的子树里。若x与y成祖先-孩子关系,假设y是x的祖先,z是y到x方向的第一个节点,则包含它的路径u-v满足:起点在x的子树里,且终点不在z的子树里。...原创 2019-03-22 21:09:06 · 168 阅读 · 0 评论 -
BZOJ 2244: [SDOI2011]拦截导弹 【三维偏序+树状数组统计方案】
题目传送门题目分析:乍一看以为是二维偏序,然后发现还有时间限制。。然后就被迫打一发cdq分治。。对时间cdq分治,对高度排序,对速度用树状数组。然后方案数又懵逼了好一会儿。。记f[i][0],f[i][1]f[i][0],f[i][1]f[i][0],f[i][1]分别表示以iii为终点、起点的最长不下降序列长度g[i][0],g[i][1]g[i][0],g[i][1]g[i][0...原创 2019-03-23 11:32:49 · 171 阅读 · 0 评论 -
BZOJ 2458: [BeiJing2011]最小三角形【分治】
题面:平面上有N个点,Xaviera想找出周长最小的三角形。为了减小问题的难度,这里的三角形也包括共线的三点。N<=200000题目分析:类似于平面最近点对。三角形是类似的。(以上摘自Quack大爷的PPT)Code:#include<cstdio>#include<cctype>#include<cmath>#inclu...原创 2019-04-03 20:00:58 · 1237 阅读 · 0 评论 -
Codeforces 125E MST Company【k度最小生成树】
题目描述:n个点m条无向边,在点1的度数恰为k的限制下求任意一棵最小生成树,输出边的编号,无解输出-1。n<=5000,m<=100000题目分析:WQS二分。给每条与1相连的边加上mid的权值后做最小生成树,如果选出的1边恰为k条,则符合条件,实际总权值为现权-k*mid。此时选出的树一定是在k限制下的最小生成树。如果小于k条,则加权要减小,r=mid-1;否则 l=mid...原创 2019-08-27 11:50:21 · 321 阅读 · 0 评论 -
【分治之二分答案】 衣服
(题目略)分析: 原则上讲,此题用一些硬解与高级数据结构都是会超时的(只要数据够强)。 所以这里要介绍一种方法------二分答案 使用此方法的前提就是答案满足单调性,即小了不行大了行(或大了不行小了行)。 显然,用二分答案的思想,l=1,r=max a[i]; 然后m=(l+r)/2;再判断用m分钟能否烘干所有衣服,若可以,则r=m(注意不是m-1,因为m-1可能原创 2016-11-05 23:57:44 · 841 阅读 · 0 评论