二分
Dan__ge
Today is difficult,tomorrow is more difficult,but the day after is beautiful.
展开
-
HDU 4763 数据结构之KMP+二分
点击打开链接 题意:求最长的开头与结尾,然后中间还有一样的,但是不能重复利用一个字符 思路:用KMP的next数组,然后用二分求最大值,具体看二分就行了#include #include #include #include #include using namespace std; typedef long long ll; const int inf=0x3f3f3f3f; con原创 2016-03-22 20:45:47 · 709 阅读 · 0 评论 -
51nod 1686 想法
点击打开链接 题意:中文 思路:我们可以二分要求的那个次数,然后对于每次判断遍历整个数组求出大于等于mid的个数即可,用vector寸一下个数即可#include #include #include #include #include #include using namespace std; typedef long long ll; typedef unsigned long原创 2016-10-26 19:39:47 · 412 阅读 · 0 评论 -
HDU 3681 BFS
点击打开链接 题意:在一个地图中,D代表不能走,F代表起点,S为空地,Y是要收集的东西,然后G是加油站,每走一步消耗一点能量,到加油站可以加满油,但一个加油站只能用一次,问从起点出发将所有Y收集所需要的最小的油箱容量 思路:这题我们可以先不管油箱直接走看需要多少步可以将所有的Y收集,若不能直接-1,然后二分这个最小的油箱的容量,里面的加油站和Y都用状态压缩来判断就行,唯一注意的就是对于一个状态原创 2016-07-09 13:48:21 · 1359 阅读 · 0 评论 -
HDU 2295 舞蹈链可重复覆盖+二分
点击打开链接 题意:给了n个点和m个圆心,在用不多于k个圆的情况下,使得所有的点被覆盖,最小的圆半径多大 思路:问最小的什么什么那么用二分准没错,那么二分条件是什么呢,就是用不多于K的圆能否将所有点覆盖,覆盖这部分就是裸的舞蹈链的可重复覆盖,行为m个圆,列为n个点,然后求出的最少行小于等于K,则成立,否则不成立#include #include #include #include #i原创 2016-06-21 13:45:20 · 2161 阅读 · 0 评论 -
HDU 3486 RMQ+二分
点击打开链接 题意:n个人,分成m组,多的人就不要了,每组的人都是顺序的,每组选出一个分最高的人,问你最少需要多少人他们的和>k 思路:因为要人数最少,直接想到了二分去求解,然后查询区间的最大值可以用RMQ直接快速查询,但是过了之后看讨论发现二分的是错的,好心人的数据是这样的 10 1500 1 1 1 1 1000 1000 1 1 1 1 明显分成两组两个人就可以了,但是我的AC代码原创 2016-06-15 15:34:46 · 785 阅读 · 0 评论 -
HDU 3450 线段树+二分
点击打开链接 题意:给一个数字序列,问你长度大于2的且相邻两个数的差的绝对值不大于d的情况对9901取余 思路:看了根本不会,都没想到是线段树的题目,弱哭~~~,看了大牛们的题解,算是知道怎么回事了,对于当前的数A,那么以它为最后一个元素可以组成的情况是A-d到A+d的和,也可以这样想,A-d的已经组成了m种情况,那么在不影响小于d的情况下,可以直接将A放到A-d组成的左右序列中,那么直接加就原创 2016-06-09 11:03:24 · 2465 阅读 · 0 评论 -
POJ 3294 后缀数组+二分
点击打开链接 题意:先是问你大于n/2个串的最长公共子串的长度,然后在这个长度的基础上,有多少子串是符合的,按字典序输出 思路:先将最长公共子串的长度求出来,然后再跑一遍,将长度符合的找出来输出就行了,PS:昨天晚上调了几个小时的bug,妹的根本就不需要自己排序,用后缀数组先符合的肯定是字典序最小的嘛,蠢死的节奏,还有就是对于每一组的前缀我们只要第一个,这个也只需要标记一下即可,后者想不到的话原创 2016-05-20 08:55:50 · 864 阅读 · 0 评论 -
POJ 3450 3080 后缀数组+二分
点击打开链接 题意:问所有串的最长公共子序列 思路:后缀数组处理两个串的最长公共子序列用后缀数组非常简单就可以完成,这个多串的也一样,和两个串的处理方式相同,不多说#include #include #include #include #include using namespace std; typedef long long ll; const int inf=0x3f3原创 2016-05-19 12:22:54 · 757 阅读 · 0 评论 -
HDU 4430 二分~现场题目
点击打开链接 题意:n根蜡烛,蛋糕是R层的,每一层可以插k的I次方个蜡烛,然后蛋糕中心可以或不插蜡烛,问R*K最小的情况中R最小的那组答案,且这R层必须插满 思路:因为它一定是插满的,对于一个R层的蛋糕,它的蛋糕上插的蜡烛数量是随着K的增大而增大,满足单调性可以用二分,然后蛋糕层数可知最大不会超过50,那么枚举就行了,简单的二分,但是要注意的是K的i次方是有可能爆long long的,我的判断原创 2016-05-27 20:02:35 · 522 阅读 · 0 评论 -
UVA 11090 图论加二分
点击打开链接 题意:给n条边和权值,求能形成的环中,权值和除以点的个数的值的最小值 思路:其实做的时候一点思路也没有,在网上看了别人的题解,还是很简单的,思维还是没锻炼到啊....,就是用二分判断mid,将所有的边权减去mid,如果这时候有负环的话,则说明这个mid是可以满足的,比如说没减去mid时,有一个k个点形成的环的权值和为k*mid-1;那么这个环是满足的,但是我们没有办法求这个k个点原创 2016-03-28 20:24:46 · 735 阅读 · 0 评论 -
ZOJ 3460 二分图+二分
点击打开链接 题意:有n个塔攻击,m个敌人的塔被攻击,每个塔攻击前要准备T1秒,注意是秒,发射后下一次攻击就要预热T2分钟,炮弹的攻击速度为v,问如何攻击可以使花费的时间最少 思路:网络流的题,知道构图就不叫题了,我们这样看,对于每一个攻击的塔来说,它发动m次攻击后肯定已经将敌人的塔消灭掉了,那么这个塔的m次攻击全部处理出来,那么对于它的第I次攻击攻击塔J,时间就是准备的时间T1*i+预热的时原创 2016-04-26 17:14:55 · 682 阅读 · 0 评论 -
HDU 3622 2-sat+二分
点击打开链接 题意:给了n个点对,每一对只能引爆其中一个,然后所有的点的爆炸半径是一样的,然后要求所有的点的爆炸范围不相交,问爆炸半径最大是多少 思路:二分半径的大小,然后判断条件就用2-sat就可以,对于点对A和B,若A和B不能共存,即A,B不能同时取,连边,然后每次判断就可以了,二分可以用精度来做,也可以二分多次已达到结果#include #include #include #i原创 2016-11-02 19:33:55 · 558 阅读 · 0 评论