二分
二分类习题总结
Gene_INNOCENT
Wait for the sunrise!
展开
-
POJ3061尺取法
题目大意:给出N个数字,每个数字不大于10000,给出一个S,在N个数字中挑选出连续的a的数字,使这a个数字的和大于或等于S。请问这个a最小是几?解题思路: 一开始暴力枚举【时间复杂度O(n^2)】,然后无情TLE......然后百度了尺取法【时间复杂度O(n)】尺取法大概可以理解为一段区间,不断收缩又扩张的过程,见下图(拍至《挑战程序设计》一书)样例为:10 15...原创 2018-02-28 21:51:31 · 268 阅读 · 0 评论 -
【Codeforces Round #507 (Div. 2)】【交互题】【二分预测】Subway Pursuit【火车预测】
Description:This is an interactive problem.In the Wonderful Metropolis of the Future, there is no need in subway train drivers. Due to the technological progress, they were replaced by the Artific...原创 2018-09-06 08:46:42 · 663 阅读 · 0 评论 -
【POJ 3977】【折半枚举】【超大背包】Subset【暑期 No.7】
题意: 给一串数字,选取其中的数字,使其值最小,并且选取数字的个数尽可能少. 分析: 因为数字范围很大,因此不能使用动态规划来计算,从而考虑折半枚举来进行计算。 将这串数字划分为两部分,第一部分用字典序枚举的方式输出所有的可能结果,将结果输入数组,再对数组进行升序。 再对该串数字的另一部分,进行字典序枚举,对于每一种可能...原创 2018-07-27 23:03:48 · 270 阅读 · 0 评论 -
【POJ 2785】【折半枚举】4 Values whose Sum is 0【暑期 No.6】
题意: 给定各有n个整数的四个数列A、B、C、D。要从每个数列中各取出1个数,使四个数的和为0。求出这样的组合的个数。当一个数列中有多个相同的数字时,把它们作为不同的数字看待。 分析: 如果直接对四个数列进行枚举的话,将是O(n^4)的复杂度,因此可以考虑折半枚举的思想。 将A、B数组相加的所有可能性列出来加入数组,O(n^2),再进行...原创 2018-07-27 22:52:12 · 260 阅读 · 0 评论 -
【POJ 3279】【开关问题】Fliptile【暑期 No.5】
题意: 有一个M * N的格子,每个格子可以翻转正反面,它们一面是黑色,另一面是白色。黑色的格子翻转后就是白色,反之亦然。游戏要求把所有的格子都翻转成白色。不过每次翻转一个格子时,与它上下左右相邻接的格子也会被翻转。求出最少需要多少次额能够将所有格子都翻成白色。 现在给定了每个格子的颜色,请求出用最小步数完成时,每个格子的翻转情况,如果最小步数的解有多个,输出字典序最...原创 2018-07-27 16:48:28 · 210 阅读 · 0 评论 -
【POJ 3276】【开关问题】Face The Right Way【暑期 No.4】
题意: N头牛排成了一列。每头牛或者向前或者向后。为了让所有的牛都面向前方,农夫约翰买了一台自动转向的机器。这个机器在购买时就必须设定一个数值K,机器每操作一次恰好使K头连续的牛转向。请求出为了让所有的牛都能面向前方需要的最少的操作次数M和对应的最小的K。 分析: 此类问题一般都考虑状态递推的思想,即考虑后一个状态能不能由前一个状态所确定。 ...原创 2018-07-27 13:25:08 · 200 阅读 · 0 评论 -
【ZOJ 1964】【尺取】Bound Found【暑期 No.3】
题意: 给定一串数字,并给定一个目标数字t,求出一个区间,该区间上的所有值相加后取绝对值最接近t. 分析: 先考虑能不能用尺取来做,如果用尺取来做,那么尺取的数列必须是单调的,否则无法确定何时左右端点移动,因此考虑能不能用前缀和来记录每一个点. 因此考虑用sum[i]表示 1-i 的前缀和,并将sum[i]这个数列进行升序,因此sum[...原创 2018-07-27 13:04:55 · 233 阅读 · 0 评论 -
【POJ 3320】【尺取法】Jessica's Reading Problem【暑期 No.2】
题意: 为了准备考试,Jessica开始读一本很厚的课本。要想通过考试,必须把课本中所有的知识点都掌握。这本书总共有P页,第 i 页恰好有一个知识点ai(每个知识点都有一个整数编号)。全书中同一个知识点可能会被多次提到,所以她希望通过阅读其中连续的一些页把所有的知识点都覆盖到。给定每页写到的知识点,请求出要阅读的最少页数。 分析: 首先肯定需要求出总共有多...原创 2018-07-27 11:32:38 · 164 阅读 · 0 评论 -
【POJ 2456】【二分答案】Aggressive cows(暑假 No.1)
题意: 农夫约翰搭了一间有N间牛舍的小屋。牛舍排在一条线上,第 i 号牛牛舍在 xi 的位置。但是他的M头牛对小屋很不满意,因此经常互相攻击。约翰为了防止牛之间互相伤害,因此决定把每头牛都放在离其它牛尽可能远的牛舍。也就是要最大化最近的两头牛之间的距离。 分析: 该题答案是在一个区间之内,并且有单调性,而且对于每一个答案,验证起来都很方便。 ...原创 2018-07-27 11:02:07 · 533 阅读 · 0 评论 -
CodeForces 780B ——The Meeting Place Cannot Be Changed(二分法)
题意: 大致题意就是在一条数轴上,大家都有各自不同的坐标,然后每个人每秒移动速度不一样,每个人既可以往前也可以往后.问将所有人集中到一点所需的最短时间.解题思路: 对时间进行二分. a[i]表示坐标,b[i]表示移动速度. check部分思路:每个人在t时间内所能够移动的范围是【a[i]-b[i],a[i]+b[i]】,然后依次对每个人的移动...原创 2018-03-01 18:01:24 · 252 阅读 · 0 评论 -
codeforces 676C (尺取法)
题目大意: 从一个ab序列中最多改变k个字符找到最长的相同连续子序列. 题目解法: 维持一个中间字符均为a的子序列,当右端点遇到b时,如果此时还有更改次数,就把b改成a,右端点++;如果此时已经没有了更改次数,就移动左端点,直到左端点越过第一个非a字母,然后右端点++. 扫两次,第一次是字母a,第二次是字母b,然后输出答案即可. ...原创 2018-02-28 23:16:09 · 238 阅读 · 0 评论 -
【Codeforces Round #291 (Div. 2) D】R2D2 and Droid Army【线段树+二分】
题意: 有n个机器人,每个机器人有m个属性。现在你有m个武器,使用第i个武器,可以对所有机器人的第i个属性值造成-1的伤害,当机器人的所有属性值均为0时,机器人被破坏。你一共可以使用武器k次,求被破坏的机器人连续的最长长度是多少。m <= 5。 思路: 比较容易想到,对于每个起点i,二分终点,即被破坏的机器人最长连续距离。 至于二分判断方面,...原创 2019-02-16 17:31:51 · 150 阅读 · 0 评论