
二分
lajiyuan_
已经退役啦,会不定期更新cf博客 or 其他计算机知识相关的博客.
展开
-
【POJ 3261 Milk Patterns】 后缀数组/Hash+二分
POJ3261 题意就是找一个串中至少出现过k次的最长可重叠子串。 我们用一个串构造出后缀数组,之后进行GetHeight,然后二分答案进行验证,验证的时候将height数组分块,如果连续至少k-1个height都大于当前验证值,表示答案可行。 POJ3261代码#include<stdio.h>#include<iostream>#include<...原创 2018-06-15 17:11:41 · 219 阅读 · 0 评论 -
【Codeforces Round #538 (Div. 2) E. Arithmetic Progression】二分+随机化+交互
E. Arithmetic Progression题意现在有一个长度为n的打乱的等差数列,你只知道长度,并且可以提出60个问题,让你确定这个等差序列的首项和公差。问题的格式分为两种:1:询问等差序列中是否有大于x的数2:询问等差序列中第i个数是什么1≤ai≤1091 \leq a_i \leq 10^91≤ai≤109做法看到这个60,我们肯定知道要想log的算法,由于每个数都小...原创 2019-03-02 09:55:55 · 218 阅读 · 0 评论 -
【 Educational Codeforces Round 60 (Rated for Div. 2) C. Magic Ship】二分
C. Magic Ship题意有一艘船,每个单位时间可以选择向U,D,L,R四个方向移动一个单位长度或者在原地不动并且船会被风向具有周期性的风往当前风的方向吹一个单位长度,现在给你船的起始位置和目标位置求船最少需要多少单位时间能到达目的地。做法答案满足二分性,因为如果我们已经到达,就可以一直与风反向行驶,保持船不动,所以具有二分性。我们只需要二分答案,并且O(n)进行check船是...原创 2019-02-19 16:35:54 · 165 阅读 · 0 评论 -
【Codeforces Round #532 (Div. 2) E. Mahmoud and a xor trip】 二分+拓扑排序
E. Andrew and Taxi题意给你一个有边权的有向图,反转一条边的代价是这条边的边权,反转多个边的代价是所有反转边里面边权最大的那条边的边权,问让这个图不存在环的最小代价,以及被反转的边的编号。做法首先求最小代价,我们只需要二分这个代价,check就是看删除所有小于这个代价的边之后是否有环。输出边集,要用到拓扑排序的一个性质一个图进行拓扑排序后,对于每一个有向边u-&amp;gt;...原创 2019-01-15 00:39:24 · 537 阅读 · 0 评论 -
【Codeforces Round #515 (Div. 3) D. Boxes Packing】 二分
D. Boxes Packing题意题意就是给你m个大小为k的盒子和n个大小为aia_iai的物品,用盒子装物品的方法是,能装下就装,并且容量减少aia_iai,否则就换下一个盒子(换下去的盒子不能再用),要求从左到右减少最少数量的物品,保证m个盒子按照这个方法能装下剩余的物品。做法很明显满足二分性质,二分+check就完事了!代码#include<stdio.h>...原创 2018-12-04 00:11:04 · 158 阅读 · 0 评论 -
【Codeforces Round #523 (Div. 2) D.TV Shows】 贪心+二分
D. TV Shows题意给你要看的n个电视节目的li和ril_i和r_ili和ri,每次要申请一个新的电视的花费是x+(ri−li)∗yx+(r_i-l_i)*yx+(ri−li)∗y这里li和ril_i和r_ili和ri是闭区间,如果两个节目有交集,就必须用两个电视看,现在问看完所有电视节目的最小花费是多少。做法很明显我们可以转化为线段相交的问题,首先对所有线段按照左端...原创 2018-11-24 14:33:46 · 409 阅读 · 0 评论 -
【51NOD1287 加农炮】二分+预处理
51NOD1287加农炮题意就是给你n个山,每个山的高度为h[i],有m发炮弹,每发炮弹的高度为b[i],每次炮弹只能打中>=b[i]的第一座山脉,并使这座山的前一个删高度上升1,问m发炮弹之后每座山的高度做法这道题有一个想法如果想到了就很好做,就是后面的山比前面矮的话就是没用的,所以我们只要用另一个数组存一个单调递增的高度,如果后一个山小于前一个山的高度,就把他的高度改为前一个山的...原创 2018-11-22 01:14:46 · 186 阅读 · 0 评论 -
【51NOD1686第k大区间】二分+尺取
51NOD1686第k大区间题意就是定义一个区间的值为这个区间众数的出现次数,给出n个数,将所有区间的值排序后求第k大的值是多少。首先这个结果是可以二分的,二分答案之后只需要验证区间的值大于当前mid的个数是不是大于等于k,而验证的方法就是尺取,因为这道题区间的值是众数出现次数,而如果某个区间满足,那么左端点不变,右端点向右移动的所有区间肯定都满足,所以满足尺取的条件,于是通过尺取O(n)验证,...原创 2018-11-21 16:15:52 · 178 阅读 · 0 评论 -
【 Codeforces Round #521 (Div. 3) E. Thematic Contests】二分+STL
E. Thematic Contests题意现在有n个题目,每种题目有自己的类型,1&lt;=n&lt;=2∗1051&lt;=n&lt;=2*10^{5}1<=n<=2∗105要举办一次考试,考试的原则是每天只有一种题目类型一种题目类型只能出现在一天每天的题目类型不能相同,而且后一天的题目数量必须正好为前一天的两倍,第一天的题目数量是...原创 2018-11-17 03:28:04 · 296 阅读 · 0 评论 -
【 Codeforces Round #521 (Div. 3) D. Cutting Out】二分
D. Cutting Out题意给你一个长度为n序列,现在要你选出一个长度为k的子序列,每次在原序列中拿出这个子序列,使可以拿的次数最多,输出这个子序列1&lt;=k&lt;=n&lt;=2∗1051&lt;=k&lt;=n&lt;=2*10^51<=k<=n<=2∗105做法看到这个数据范围我们首先就应该想到是不是可...原创 2018-11-17 03:26:44 · 220 阅读 · 0 评论 -
【牛客练习赛3-E.绝对半径2051】 二分+预处理
E题给你一个长度为n的数组,最多删除k个元素,求最长相同连续子序列。给你一个长度为n的数组,最多删除k个元素,求最长相同连续子序列。给你一个长度为n的数组,最多删除k个元素,求最长相同连续子序列。0&lt;=k&lt;=n&lt;=1∗1051&lt;=a[i]&lt;=1∗1090&lt;=k&lt;=n&lt;=1*10^{5...原创 2018-11-14 12:39:04 · 182 阅读 · 0 评论 -
【Educational Codeforces Round 53 (Rated for Div. 2)-C. Vasya and Robot】二分
Educational Codeforces Round 53 (Rated for Div. 2) C. Vasya and Robot题意在二维平面上有一个机器人最开始在点(0,0)处在二维平面上有一个机器人最开始在点(0,0)处在二维平面上有一个机器人最开始在点(0,0)处最终他要走到点(x,y)处,现在给出行动路线,有(L,R,U,D)四种走法最终他要走到点(x,y)处,现在给出行动...原创 2018-11-14 03:20:01 · 139 阅读 · 0 评论 -
【51NOD-1243-排船问题】 二分
51NOD1243排船问题题意一个码头中有N艘船和N个木桩,船的长度为2∗X,码头的宽度为M一个码头中有N艘船和N个木桩,船的长度为2*X,码头的宽度为M一个码头中有N艘船和N个木桩,船的长度为2∗X,码头的宽度为MN个木桩的位置(相对码头左岸的位置)会在数据中给出N个木桩的位置(相对码头左岸的位置)会在数据中给出N个木桩的位置(相对码头左岸的位置)会在数据中给出船和船之间不能重叠,即每艘...原创 2018-10-23 00:38:37 · 441 阅读 · 0 评论 -
【NWERC2017-Problem G-Glyph Recognition 】二分+计算几何
题目链接NWERC2017-Problem G-Glyph Recognition 题意给你n个点,找出一种中心在远点而且有一个点在x轴上的正多边形环覆盖这些点(在一个正多边形中扣去一个与他相似的且平行的正多边形),是这个环的外围面积尽量小,内围面积尽量大,正多边形为正3-8边形,求内部面积与外部面积的最大比值。做法二分每种正多边形在x轴上点的横坐标,当计算最大的内围面积时,只要当前多边...原创 2018-10-19 02:01:07 · 306 阅读 · 0 评论 -
【51NOD1112KGold】 二分+优先队列
51NOD1112KGold题意就是给你n个直线,求这些直线在第一象限的前10000个交点。这道题由于数据量有10000,所以很难下手,如果是n^2枚举+优先队列会MLE,如果每次维护一个10000大小的优先队列又会TLE,所以我们需要二分出这前一万个点在哪个横坐标之前,二分的时候要先将直线按照b从小到大排序,之后如果我们枚举当前横坐标为x0x_0x0,按照k∗x0+bk*x_0+bk∗x0...原创 2018-10-08 23:41:16 · 282 阅读 · 0 评论 -
【POJ2774】后缀数组 / Hash+二分
POJ2774 链接 题意求两个串的最长公共子串,我们可以把两个串用一个特殊字符拼接,然后跑SA求出heightSA求出heightSA求出height,由于最长公共子串肯定是heightheightheight中的某一个,而且要满足sa[i]和sa[i−1]sa[i]和sa[i−1]sa[i]和sa[i-1]分别属于两个串,所以只要跑一遍后缀数组遍历一遍heightheightheight就...原创 2018-05-17 02:06:53 · 385 阅读 · 0 评论 -
【POJ3294】 后缀数组+二分
POJ3294 链接 题意为给你n个字符串,求至少出现在[n2][n2][ \frac{n}{2}]个串中的最长公共子串,如果有多个全部输出。本题和上题几乎一模一样,只是要把判断条件由来自n个串改成来自[n2][n2][\frac{n}{2}]个串,注意一下存储答案的方式,如果当前二分量存在答案并且第一次访问,那么清空vectorvectorvector,如果不是第一次访问,就在vecto...原创 2018-05-17 02:09:38 · 426 阅读 · 0 评论 -
【POJ3450】后缀数组+二分
POJ3450 链接 题意为求多个串的最长公共子串,参考上题的做法,我们可以用特殊字符对所有字符串进行拼接,但是问题在于如果找到这个最长公共子串。数据量为n&lt;4000len&lt;200n&lt;4000len&lt;200n2−n2−n2-n遍历height数组,如果有某一段连续的区间heightheightheight数组均大于midmidmid,而且这段区间拥有来自nnn个串的后缀...原创 2018-05-17 02:08:29 · 513 阅读 · 0 评论 -
【Educational Codeforces Round 61 (Rated for Div. 2) D.Stressful Training】二分
D.Stressful Training题意有n台电脑,第i台初始电量为aia_iai,每分钟消耗电量为bib_ibi,现在要购买一个充电器,每分钟可以让一个电脑的电量增加XXX,比赛一共持续k分钟,充电器在一分钟之内只能给一个电脑充电,问能让所有学生成功完成比赛的最小的XXX(比赛中途不能出现电量小于000,如果恰好在最后一分钟电量为负,也算成功完成)。做法首先这个我们把这个kkk...原创 2019-03-07 11:47:31 · 317 阅读 · 0 评论