二分&三分
_beginend
这个作者很懒,什么都没留下…
展开
-
LibreOJ #2478.「九省联考 2018」林克卡特树 树形dp+带权二分
题意给出一棵n个节点的树和k,边有边权,要求先从树中选k条边,然后把这k条边删掉,再加入k条边权为0的边,满足操作完后的图仍然是一棵树。问新树的带权直径最大是多少。 n,k≤3∗105n,k≤3∗105n,k\le3*10^5分析不难发现我们要求的就是在树中选出k+1条不相交的链使得其权值和最大。 当k比较小的时候,我们可以树形dp,设f[i,j,0/1/2]f[i,j,0/1...原创 2018-05-16 17:33:49 · 680 阅读 · 0 评论 -
bzoj 3230: 相似子串 后缀数组+rmq+二分
题意 N≤100000,Q≤100000,字符串只由小写字母’a’~’z’组成分析一开始是想写sam的,然后发现貌似sam我只会两个log而且比sa更难写,于是还是写了sa。 这题只要把sa求出来之后根据height数组求出每个后缀有多少个本质不同的子串,然后在上面二分即可。代码#include<iostream>#include<cstdio>#include<cstdlib>#incl原创 2017-12-21 19:06:13 · 311 阅读 · 0 评论 -
bzoj 3130: [Sdoi2013]费用流 网络流+二分答案
题意Alice和Bob在图论课程上学习了最大流和最小费用最大流的相关知识。 最大流问题:给定一张有向图表示运输网络,一个源点S和一个汇点T,每条边都有最大流量。一个合法的网络流方案必须满足:(1)每条边的实际流量都不超过其最大流量且非负;(2)除了源点S和汇点T之外,对于其余所有点,都满足该点总流入流量等于该点总流出流量;而S点的净流出流量等于T点的净流入流量,这个值也即该网络流方案的总运输量。最原创 2017-11-22 16:55:03 · 427 阅读 · 0 评论 -
bzoj 2653: middle 可持久化线段树+二分答案
题意一个长度为n的序列a,设其排过序之后为b,其中位数定义为b[n/2],其中a,b从0开始标号,除法取下整。给你一个长度为n的序列s。回答Q个这样的询问:s的左端点在[a,b]之间,右端点在[c,d]之间的子序列中,最大的中位数。其中a分析据说这是clj的题,果然牛逼。。。一开始想到了一个主席树+分块的做法,推了一下发现时间复杂度是错的。。。 首先我们可以二分答案,设为x,然后把不小于x的数设为原创 2017-11-17 09:05:29 · 347 阅读 · 0 评论 -
bzoj 5090: 组题 凸包+二分
题意著名出题人小Q的备忘录上共有n道可以出的题目,按照顺序依次编号为1到n,其中第i道题目的难度系数被小Q估计为a_i,难度系数越高,题目越难,负数表示这道题目非常简单。小Q现在要出一套难题,他决定从备忘录中选取编号连续的若干道题目,使得平均难度系数最高。当然,小Q不能做得太过分,一套题目必须至少包含k道题目,因此他不能通过直接选取难度系数最高的那道题目来组成一套题。请写一个程序,帮助小Q挑选平均难原创 2017-12-09 07:42:24 · 407 阅读 · 0 评论 -
51nod 1440 迈克打电话 后缀数组+可持久化线段树+二分
题意有n只熊,从1到n进行编号。 第i只熊的电话号码是si。每只熊会给那些电话号码是他的子串的熊打电话(可能会给自己打)。 call(i, j) 表示第i只熊给第j只熊打电话的次数,也就是第j个串在第i个串中出现的次数。 迈克会有q次询问。每个询问中给出l,r,k,然后请您计算一下∑ri=lcall(i,k)\sum_{i=l}^rcall(i,k)。 1 ≤ n ≤ 2 × 10^5 ,原创 2017-10-25 15:41:31 · 360 阅读 · 0 评论 -
bzoj 4237: 稻草人 cdq分治+单调栈+二分
题意JOI村有一片荒地,上面竖着N个稻草人,村民们每年多次在稻草人们的周围举行祭典。 有一次,JOI村的村长听到了稻草人们的启示,计划在荒地中开垦一片田地。和启示中的一样,田地需要满足以下条件: 田地的形状是边平行于坐标轴的长方形; 左下角和右上角各有一个稻草人; 田地的内部(不包括边界)没有稻草人。 给出每个稻草人的坐标,请你求出有多少遵从启示的田地的个数 1<=N<=2*10^5。原创 2017-10-23 19:57:53 · 316 阅读 · 0 评论 -
51nod 1488 帕斯卡小三角 单调栈维护凸壳+二分
题意f(1,j)=a[j], 1≤j≤n. f(i,j)=min(f(i-1,j),f(i-1,j-1))+a[j], 2≤i≤n, i≤j≤n. a是一个长度为n的数组。现在有若干个询问,输入x,y,求f(x,y) n,q<=100000分析显然要求的是从第一层某个点(1,s)到(x,y)的最短路径。 yy一下不难发现路径必然是从某个(1,s)走到(x-y+s,s)然后再沿着对角线走到(x原创 2017-10-31 11:20:14 · 478 阅读 · 0 评论 -
bzoj 4311: 向量 线段树分治+凸包+三分
题意你要维护一个向量集合,支持以下操作: 1.插入一个向量(x,y) 2.删除插入的第i个向量 3.查询当前集合与(x,y)点积的最大值是多少。如果当前是空集输出0 n分析如果直接用类似二维数点的方法来做显然不行。 考虑点积最大值的几何意义,也就是一条与该向量垂直的直线从无穷远处飞过来,碰到的第一个点就是答案。不难发现答案一定在凸包上面。 如果不带删除操作的话,我们可以原创 2018-01-10 07:46:49 · 351 阅读 · 0 评论 -
AtCoder Grand Contest 002 D - Stamp Rally 并查集+二分答案+倍增
题意给出一个无向连通图。有q次询问,每次询问给出两个不同的点x和y,还有一个参数z。求一个最小的k使得只考虑编号不超过k的边时,x的连通块和y的连通块中的点的并集不小于z。 n,m,q<=100000分析首先二分一波答案。 那么现在要快速求的就是某个点只走编号不超过k的边时的连通块大小。 注意到只有最小瓶颈生成树上的边是有贡献的,所以其他的边可以忽略。 考虑按编号从小...原创 2018-02-09 20:46:36 · 638 阅读 · 0 评论 -
bzoj 2792: [Poi2012]Well 二分答案
题意给出n个正整数X1,X2,…Xn,可以进行不超过m次操作,每次操作选择一个非零的Xi,并将它减一。 最终要求存在某个k满足Xk=0,并且z=max{|Xi - Xi+1|}最小。 输出最小的z和此时最小的k。 1<=n<=1,000,000,1<=m<=10181<=n<=1,000,000,1<=m<=10181...原创 2018-03-28 17:25:58 · 281 阅读 · 0 评论 -
Codeforces 150E Freezing with Style 点分治+二分答案+单调队列
题意给出一棵n个节点的树,边有边权,长度均为1。问长度在[L,R]之间的所有路径中,中位数最大是多少。 n<=100000分析一开始比较自然的想法是二分答案,然后把不小于mid的边权看做1,其余看做0,然后看是否存在一条路径满足边权和大于0。 显然可以点分治来做。在分治的时候维护最大值可以用带log的数据结构,这样的话复杂度就是O(nlog3n)O(nlog3n)O(nl...原创 2018-04-10 16:48:21 · 468 阅读 · 0 评论 -
bzoj 4755: [Jsoi2016]扭动的回文串 manachar+hash+二分
题意JYY有两个长度均为N的字符串A和B。 一个“扭动字符串S(i,j,k)由A中的第i个字符到第j个字符组成的子串与B中的第j个字符到第k个字符组成的子串拼接而成。 比如,若A=’XYZ’,B=’UVW’,则扭动字符串S(1,2,3)=’XYVW’。 JYY定义一个“扭动的回文串”为如下情况中的一个: 1.A中的一个回文串; 2.B中的一个回文串; 3.或者某一个回文的扭动字符串...原创 2018-03-29 21:55:38 · 289 阅读 · 0 评论 -
bzoj 4743: [Usaco2016 Dec]Robotic Cow Herd 线段树+二分答案
题意有n个数集,每个数集里最多只有10个元素,现在从每个数集里面选数一个数,假设选出的数的和是p,给出k,问前k小的p的和。 n,k<=100000分析首先二分答案lim,然后考虑如何找到所有不大于lim的p的和。 设函数solve(num,kth)表示当前状态的和为num,上一次拓展的位置为kth。 用一颗线段树维护每个位置下一个选的数与上一个选的数的差的最小值,然后...原创 2018-03-16 07:48:00 · 509 阅读 · 0 评论 -
CS Academy Round 70 Squared Ends dp+cdq分治+凸包+二分
题意给出一个长度为n的序列a[1..n],现在要将这个序列分成k段,第i段[li,ri][li,ri][l_i,r_i]的贡献为(a[ri]−a[li])2(a[ri]−a[li])2(a[r_i]-a[l_i])^2。要求最小化每一段贡献的和。 n<=10000,k<=100分析设dp[i,j]dp[i,j]dp[i,j]表示前i个位置分成j段的最小贡献和。 不难得到...原创 2018-02-22 11:32:56 · 283 阅读 · 0 评论 -
bzoj 4310: 跳蚤 后缀数组+二分答案
题意给一个长度为n的字符串,要求将其分成不超过m个连续部分,使得分割后所有子串中字典序最大的子串字典序尽量小。 n<=100000分析一开始没想到原来字符串也可以二分答案。。。 那么我们就先二分答案是第几小的子串,求第k大子串可以用sa来搞。 因为我们用的是后缀数组,所以考虑从后往前贪心。 若当前后缀p的字典序小于第k大的串,就直接跳过,否则就求它们的lcp。 若l...原创 2018-03-08 20:44:37 · 449 阅读 · 0 评论 -
CS Academy Round 54 Voting 二分
题意一共有n 位评委,他们每人可以打1 分或0 分,第i 位评委希望选手的得分为v[i]。评委们会按一个顺序依次评分,第一个评分的评委打0 分。对于接下来的评委,假设前面a 位评委评分总和为b,评委会认为这位选手期望得分为b/a*n,如果这个得分低于他所希望的得分,他会打1 分,否则他会打0 分。你希望选手的得分为p(0<=p<=n),为此你可以调换评委们的评分顺序。你需要输出一个...原创 2018-03-05 15:38:48 · 178 阅读 · 0 评论 -
AtCoder Grand Contest 006 D - Median Pyramid Hard 二分答案
题意给出一个长度为2n-1的排列a[n,1..2n-1],定义a[i,j]=a[i-1,j-1],a[i-1,j],a[i-1,j+1]三个数中的中位数,问a[1,n]的值是多少。 n<=100000分析首先可以二分答案,然后把小于mid的数看成0,其余看成1,那么取中位数就变成了取众数。 观察一下性质: 注意到如果最底下一行有两个相邻的0,那么这两列将会全都是0。 ...原创 2018-02-15 10:18:40 · 424 阅读 · 0 评论 -
bzoj 3533: [Sdoi2014]向量集 线段树+凸包+二分
题意维护一个向量集合,在线支持以下操作: “A x y (|x|,|y| < =10^8)”:加入向量(x,y); ” Q x y l r (|x|,|y| < =10^8,1 < =L < =R < =T,其中T为已经加入的向量个数)询问第L个到第R个加入的向量与向量(x,y)的点积的最大值。 集合初始时为空。强制在线。 1 < =N < =4×10^5分析世界上最开心的事情莫过于一遍AC原创 2017-10-22 20:14:11 · 311 阅读 · 0 评论 -
bzoj 1816: [Cqoi2010]扑克牌 二分
题意你有n种牌,第i种牌的数目为ci。另外有一种特殊的牌:joker,它的数目是m。你可以用每种牌各一张来组成一套牌,也可以用一张joker和除了某一种牌以外的其他牌各一张组成1套牌。比如,当n=3时,一共有4种合法的套牌:{1,2,3}, {J,2,3}, {1,J,3}, {1,2,J}。 给出n, m和ci,你的任务是组成尽量多的套牌。每张牌最多只能用在一副套牌里(可以有牌不使用)。 n<=原创 2017-10-20 22:05:23 · 431 阅读 · 0 评论 -
bzoj 2258: pku2758 Checking the Text 文本校对 hash+二分
题意为了给Wind买生日礼物,Jiajia不得不找了一份检查文本的工作。这份工作很无聊:给你一段文本 要求比对从文本中某两个位置开始能匹配的最大长度是多少。但比无聊更糟糕的是,Jiajia的经理 还可能往文本里面插入一些字符。 Jiajia想用一个程序来解决这些繁琐的工作。这个程序的速度要足够快,因为Wind的生日就快要到了 Jiajia必须赚到足够多的钱,也就是处理足够多的文本。原创 2017-10-10 08:49:54 · 326 阅读 · 0 评论 -
bzoj 3993: [SDOI2015]星际战争 二分答案+最大流
题意3333年,在银河系的某星球上,X军团和Y军团正在激烈地作战。在战斗的某一阶段,Y军团一共派遣了N个巨型机器人进攻X军团的阵地,其中第i个巨型机器人的装甲值为Ai。当一个巨型机器人的装甲值减少到0或者以下时,这个巨型机器人就被摧毁了。X军团有M个激光武器,其中第i个激光武器每秒可以削减一个巨型机器人Bi的装甲值。激光武器的攻击是连续的。这种激光武器非常奇怪,一个激光武器只能攻击一些特定的敌人。Y原创 2017-03-28 15:01:19 · 389 阅读 · 0 评论 -
bzoj 3172: [Tjoi2013]单词 后缀数组+rmq+二分
题意某人读论文,一篇论文是由许多单词组成。但他发现一个单词会在论文中出现很多次,现在想知道每个单词分别在论文中出现多少次。每个单词由小写字母组成,N<=200,文章长度不超过10^6分析AC自动机模板,但由于很久没打sa了想要复习一下,于是就用了sa+rmq+二分的方法来做。代码#include<iostream>#include<cstdio>#include<cstdlib>#includ原创 2017-02-20 19:37:07 · 415 阅读 · 0 评论 -
bzoj 1857: [Scoi2010]传送带 三分套三分
题目传送门分析恩NOIP快来了,作为一个没写过三分的弱菜,赶紧找一道三分题写一写,免得到时候写不出来。三分法对于一个上凸函数,若对于Ax,Bx(Ax < Bx),有Ay < By则峰顶必然在(Ax,+∞);若有Ay < By则峰顶必然在(-∞,Bx)中;若有Ay=By则峰顶必然在[Ax,Bx]中。 下凸函数同理。回到这题,这题要我们在两条直线上分别求两个点,那么我们假设直线AB上取的点已经固定,那原创 2016-11-14 07:26:37 · 359 阅读 · 0 评论 -
bzoj 2440: [中山市选2011]完全平方数 莫比乌斯函数
题目传送门分析莫比乌斯函数μ(i)=(−1)k(-1)^k(i为k个互不相等的素数的成绩),否则μ(i)=0 那么对于这题,可以想到用容斥原理,那么答案就是n-奇数个质数的平方的倍数的个数+偶数个质数的平方的倍数的个数 那么ans=Σμ[i]*(n/i^2) (i<=sqrt(n))记得开long long代码#include<iostream>#include<cstdio>#includ原创 2016-11-08 12:20:15 · 335 阅读 · 0 评论 -
bzoj 4819: [Sdoi2017]新生舞会 二分答案+费用流
题意有n对男女要配对,每对不同的男女会产生两个不同的权值a和b,求一种搭配方案使得(a’1+a’2+…+a’n)/(b’1+b’2+…+b’n)最大。 n<=100分析二分答案,设其为ans,则必然所有的(a’1+a’2+…+a’n)/(b’1+b’2+…+b’n)<=ans都满足,化简一下可以得到(a1-ans*b1)+(a2-ans*b2)+…+(an-ans*bn)<=0 那么将二分图每条原创 2017-04-11 19:45:52 · 1075 阅读 · 0 评论 -
bzoj 4753: [Jsoi2016]最佳团体 二分答案+树形dp
题意JSOI信息学代表队一共有N名候选人,这些候选人从1到N编号。方便起见,JYY的编号是0号。每个候选人都由一位编号比他小的候选人Ri推荐。如果Ri=0则说明这个候选人是JYY自己看上的。为了保证团队的和谐,JYY需要保证,如果招募了候选人i,那么候选人Ri”也一定需要在团队中。当然了,JYY自己总是在团队里的。每一个候选人都有一个战斗值Pi”,也有一个招募费用Si”。JYY希望招募K个候选人(J原创 2017-04-14 09:59:32 · 711 阅读 · 0 评论 -
bzoj 4443: [Scoi2015]小凸玩矩阵 二分答案+网络流
题意给出一个N*M(N<=M)的矩阵A,要求小秃从其中选出N个数,其中任意两个数字不能在同一行或同一列,求选出来的N个数中第K大的数字的最小值是多少。 1<=K<=N<=M<=250,1<=矩阵元素<=10^9分析一眼题。。。 把第k大变成第n-k+1小,二分答案,然后用网络流判断是否能在原图中找到k个点使得任意两点不在同一行同一列且都不大于二分值即可。代码#include<iostream>原创 2017-04-14 10:30:02 · 581 阅读 · 0 评论 -
bzoj 3613: [Heoi2014]南园满地堆轻絮 二分答案+贪心
题意有一个正整数数列 A[1]…A[n],目标是求另一个正整数数列 B[1]…B[n],使得对于任意的 1≤i分析傻逼题。 直接二分答案然后贪心就好了。 貌似还有比较神奇的线性做法?代码#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>using namespac原创 2017-09-28 19:23:39 · 294 阅读 · 0 评论 -
bzoj 2876: [Noi2012]骑行川藏 二分+拉格朗日乘数法
题意蛋蛋非常热衷于挑战自我,今年暑假他准备沿川藏线骑着自行车从成都前往拉萨。川藏线的沿途有着非常美丽的风景,但在这一路上也有着很多的艰难险阻,路况变化多端,而蛋蛋的体力十分有限,因此在每天的骑行前设定好目的地、同时合理分配好自己的体力是一件非常重要的事情。 由于蛋蛋装备了一辆非常好的自行车,因此在骑行过程中可以认为他仅在克服风阻做功(不受自行车本身摩擦力以及自行车与地面的摩擦力影响)。某一天他打算原创 2017-07-19 12:43:49 · 449 阅读 · 0 评论 -
bzoj 4868: [Shoi2017]期末考试 三分答案
题意:有n位同学,每位同学都参加了全部的m门课程的期末考试,都在焦急的等待成绩的公布。第i位同学希望在第ti天或之前得知所.有.课程的成绩。如果在第ti天,有至少一门课程的成绩没有公布,他就会等待最后公布成绩的课程公布成绩,每等待一天就会产生C不愉快度。对于第i门课程,按照原本的计划,会在第bi天公布成绩。有如下两种操作可以调整公布成绩的时间:1.将负责课程X的部分老师调整到课原创 2017-07-09 14:23:54 · 1210 阅读 · 0 评论 -
bzoj 2406: 矩阵 二分答案+上下界网络流
题意 N,M<=200,0<=L<=R<=1000,0<=Aij<=1000分析这题一看就觉得是网络流模型。。。问题在于如何建图。 首先我们二分答案,将其转化为判定性问题。 设矩阵A的第i行元素和为r[i],第j列元素和为c[j],若想满足当前答案,那么B的第i行的总和范围在[r[i]-mid,mid+r[i]],列同理。我们把每行看做一个点,每列看做一个点,构建二分图。原点向每个行点连边,上原创 2017-07-15 14:37:38 · 339 阅读 · 0 评论 -
bzoj 2525: [Poi2011]Dynamite 二分答案+树形贪心
某个点上的引线被点燃后的1单位时间内,在树上和它相邻的点的引线会被点燃。如果一个有炸药的点的引信被点燃,那么这个点上的炸药会爆炸。 求引爆所有炸药的最短时间。 1<=m<=n<=300000分析很显然这是要二分答案的,然后贪心一下就好了。一开始想的贪心策略是每次找一个深度最大且未被覆盖的关键点,然后把这个点的第mid个祖先覆盖掉。 这个策略应该是没错的,但有个问题就是每选择一个点时,如果这个点原创 2017-06-07 09:54:39 · 677 阅读 · 0 评论 -
bzoj 2654: tree 二分+最小生成树
题意给你一个无向带权连通图,每条边是黑色或白色。让你求一棵最小权的恰好有need条白色边的生成树。 题目保证有解。 n<=50000,m<=100000分析感觉这是一道比较巧妙的题目。 有一个很重要的想法就是我们可以使得所有白色边同时加上或减去一个数来控制我们使用的白边数量,那么我们就可以通过二分这个数使得其恰好包含我们所需要的白边数量。 还有一个细节,就是如果取mid时白边数量代码#inc原创 2017-05-31 21:10:51 · 444 阅读 · 0 评论 -
bzoj 4476: [Jsoi2015]送礼物 二分答案+单调队列
题意给出n,k,l,r和序列a,要求从a中选一段连续的区间[i,j]出来,使得M(i,j)-m(i,j)/(j-i+k)最大。 M(i,j)表示[i,j]中的最大值,m(i,j)表示[i,j]中的最小值。 Ai< =10^8,N,K< = 50,000分析看到求平均就可以想到二分答案了。 设我们二分的答案为mid 那么对于所有的区间[l,r]显然有M(l,r)−m(l,r)r−l+k<=mi原创 2017-04-25 20:08:12 · 1120 阅读 · 0 评论