二分
ijbuhv
这个作者很懒,什么都没留下…
展开
-
hdu5246超级赛亚ACMer 二分
//给一个序列,ACMer的初始值为0-m任意一个 //每次和序列值ai相等就acmer的值就为ai+k //k的值是每次比较后减- //问acmer最后得到的值能否大于所有值 //从小于m的最小的值开始,用二分找小于m+k最小的那一个,直到大于最大值 #include #include #include #include using namespace std ; const原创 2015-05-30 22:49:45 · 630 阅读 · 0 评论 -
hdu5510 kmp+二分
//给出n个字符串,找出最大的i //使得在(1<=j<i)的范围内有字符串不是i的子串 //从n-1开始往前推,如果字符串j是字符串str[n]的子串 //那么字符串j是在字符串n的哪个区间范围内 //存下前面所有字符串在字符串n的所有区间 //然后可以用二分找到第一个不包含这个区间的前面的区间 #include #include #include #include using namespac原创 2015-11-08 17:03:55 · 390 阅读 · 0 评论 -
hdu4750Count The Pairs 并查集
//给出n个点,m条边的无向图 //对于一个给定的t //找出有多少对(s,t)使得从s到t的所有路线中 //这些路线中权值最大得最小值小于等于t即可以 //将边以权值从小到大排序 //将询问以t从小到大排序 //对于每一次加上一条边,如果将两个集合连接 //那么可以将上的pair<s,t>为 (ss[fx]*ss[fy])*2个 //再要询问值小于这个值的所有询问都加上(ss[fx]*ss[fy]原创 2015-10-07 18:36:09 · 333 阅读 · 0 评论 -
hdu5536Chip Factory dfs+二分
//给出n(n<=1000) //选出三个不同的数,使得(ai+aj)^ak最大 //枚举ai,aj,的到的ai+aj=sum //从sum的二进制最高为开始,sum在该位为,则选择 //二分优先原则这一位和其不同的区间的点 #include #include #include #include #include using namespace std ; const int maxn = 101原创 2015-11-07 17:01:03 · 311 阅读 · 0 评论 -
hdu4768Flyer 二分
//给出n个社团,每个社团对于 //可以对编号为ai , ai+ci , ai + 2ci + ...ai+kci(ai+k*ci<=bi<ai+k*ci+ci) //发传单,最多有一个编号的同学受到的个数为奇数,如果有,找出这个同学 //对于每一个区间,可以o(n)找出在这个区间的所有数的和,可以用二分找出 //长度为1的和为奇数的区间 #include<cstdio> #include<cstr原创 2015-10-07 18:26:53 · 337 阅读 · 0 评论 -
hdu5493Queue 树状数组+二分
//在意个队中 //每个人知道它的身高和在排在他前面或者后面的 //人的身高的个数 //问能否恢复原来的队列 //如果有多种情况,输出字典序最小的 //先将人以身高从小到大排序 //然后从第一个人开始插入队列 //对于第i个人k即为在其前面或者后面需要留几个位置在它前面或者后面 //选择两种插入方式中位置小的一个 //可以用树状数组记录空位 , 用二分找位置 #include<cstdio> #in原创 2015-09-28 22:56:52 · 696 阅读 · 0 评论 -
hdu2363Cycling 二分+最短路
//一个无向图 ,每个点都有高度, //问从起点1到终点n的最高点减最低点的差值最小的前提下的最短路和这个差值 //由于n<100所以可以先将这n个点按升序排,枚举这个最短路的左边最小mi,二分找最小的右边ma #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std ;原创 2015-08-02 16:52:13 · 567 阅读 · 0 评论 -
hdu2962Trucking 二分+最短路
//一个无向图,每一条路有限制载重和长度 //问从起点到终点的最大载重,以及在最大载重的情况下的最短路是多少 //二分最大栽重,对于每个载重,小于这个载重的路径不走 #include<iostream> #include<cstring> #include<cstdio> using namespace std ; const int maxn = 1010 ; const int inf = 0x原创 2015-08-02 14:27:12 · 655 阅读 · 0 评论 -
hdu1839Delay Constrained Maximum Capacity Path 二分+最短路
//一个无向图,两点之间的流量为c,两点花的时间为t //问从起点到终点n之间时间小于等于T且只走一条路径能够运输的最大流量为多少 //二分流量,小于这个流量的路径不走,求其时间是否小于等于T得到答案 #include<cstdio> #include<cstring> #include<iostream> #include<queue> using namespace std ; const in原创 2015-08-01 13:38:53 · 620 阅读 · 0 评论 -
hdu3388Coprime 二分+容斥原理
//找第k个和n,m互质的数 //由容斥原理可得 //在[1,x]范围内且与n不互质的数的个数为: //对于所有的n的素数因子:和一个素数因子不互质的个数-两个素数因子相乘的个数+三个素数因子相乘的个数-..... //对于x越大,在[1 , x]范围内的与n,m互质的数越多,所以存在单调性,可以用二分找到刚好有k个数和n,m互质 #include #include #include原创 2015-06-02 20:19:05 · 896 阅读 · 0 评论 -
hdu5248 二分
//有一个序列A , 改变序列的元素使其成为单调递增的序列B //求最小的max(|Ai-Bi|)(1 //枚举最大值x,用二分查找 #include #include #include using namespace std ; const int maxn = 100010 ; int a[maxn] ; int b[maxn] ; int n ; int judge(i原创 2015-05-30 22:46:39 · 938 阅读 · 0 评论 -
bestcoder#65ZYB's Premutation 树状数组+二分
#include #include #include using namespace std ; const int maxn = 50010 ; int tree[maxn] ; int n ; int getsum(int x){ int sum = 0 ; while(x){ sum += tree[x] ; x -= x&(-x) ; }原创 2015-12-05 21:26:43 · 549 阅读 · 0 评论