二分
文章平均质量分 65
skajre
这个作者很懒,什么都没留下…
展开
-
UVA 1421 Archery(二分+维护区间)
二分的难点还是在判断上。写这题的时候需要注意精度和L,R分别为角度。#include#include#include#include#includeusing namespace std;const int maxn=5000+10;const double eps=1e-6;struct node{ double d,l,r;}line[maxn];int n;原创 2016-10-10 21:56:35 · 260 阅读 · 0 评论 -
POJ 2296 Map Labeler(二分+2-SAT)
水题吧。#include#include#include#include#includeusing namespace std;const int maxn=100+5;struct TwoSAT{ int n; vector G[maxn*2]; bool mark[maxn*2]; int s[maxn*2],c; bool原创 2016-11-16 10:32:47 · 255 阅读 · 0 评论 -
UVA 1422 Processor(优先队列+贪心+二分)
这应该算是个难题,难点在于如何处理判断能否在规定时间完成任务。思路是设的速度当作一个剩余值res,当res为0时,代表现在当前时间的已经没有处理任务能力了,然后枚举结束时间,如果从优先队列从跳出来的node结束时间小于当前枚举的时间,代表着在那个结束时间内,无法处理完成这个任务,直接范围false,如果最后能完成枚举结束时间的for循环,那么只要判断所有任务都处理完了,并且队列里没有元素了,那原创 2016-10-07 20:26:24 · 285 阅读 · 0 评论 -
UVA 1450 Airport (二分)
这题的难点在于判断哪边飞,如果其中一边为0,那么肯定是不为0的飞,巧妙之处在于如果两边都不为0,那么就留着,一旦两遍超过二分答案的数量超过留着的可以起飞的机数,那么二分答案肯定失败了,重新二分即可。#include#include#include#includeusing namespace std;const int maxn=5000+10;int A[maxn],B[maxn原创 2016-10-06 15:51:40 · 317 阅读 · 0 评论 -
UVA 12206 Stammering Aliens(后缀数组+二分)
这题二分搞了我两天。#include#include#include#include#includeusing namespace std;const int maxn=44000+5;struct SuffixArray{ int s[maxn]; int sa[maxn]; int rank[maxn]; int height[maxn];原创 2016-10-28 09:55:05 · 218 阅读 · 0 评论 -
UVA 11627 Slalom(二分)
这题的题意真是醉了,而且UVA评测机好像对这题评测不了。#include#include#include#includeusing namespace std;const int maxn=1000000+100;const double eps=1e-8;int x[maxn],y[maxn],s[maxn];int w,v,n,S;bool ok(int mid){原创 2016-10-05 11:01:28 · 208 阅读 · 0 评论 -
UVA 1335 Beijing Guards(二分+构造)
这题目偶数的结论可以很容易得出来,但是奇数很麻烦,自己想不出来,看的书上的解释,分成两个区间1-r[1],r[1]+1-p,然后第一个位置取左边的区间,接下来就是偶数尽量往左取,奇数尽量往右取,那么最后一个奇数位尽量往右取,只要它的元素全部都是右边的,没取左边的,那就成功了,所以left]n]==0表明当前定义的物品数目是符合要求,继续缩小范围即可,反之扩大范围。//// main.cpp/原创 2016-09-30 21:19:45 · 213 阅读 · 0 评论 -
UVA 12097 Pie(二分)
很明显,二分面积就可以求解。//// main.cpp// Richard//// Created by 邵金杰 on 16/9/30.// Mail:1016427040@qq.com or jasonshaosjj@gmail.com// Copyright © 2016年 邵金杰. All rights reserved.//#include#include原创 2016-09-30 07:57:41 · 532 阅读 · 0 评论 -
UVA 12124 Assemble(二分)
求最小值中的最大值,二分答案找出。//// main.cpp// Richard//// Created by 邵金杰 on 16/9/29.// Mail:1016427040@qq.com or jasonshaosjj@gmail.com// Copyright © 2016年 邵金杰. All rights reserved.//#include#inc原创 2016-09-29 23:21:29 · 244 阅读 · 0 评论 -
UVA 1392 DNA Regions(单调队列+二分)
(i-j)*p>=(f[i]-f[j])*100==>i*p-f[i]*100>=j*p-f[j]*100,所以只要维护一个单调递减队列,找出最近的j就可以了。第一个元素是0,因为第0个的时候0*p-f[0]*100=0,所以只要i*p-f[i]*100大于0,那么肯定是可行的。#include#include#include#include#includeusing namespa原创 2016-10-14 19:08:59 · 251 阅读 · 0 评论 -
HDU 5884 Sort(哈夫曼树+二分)
其实这是哈夫曼树,一开始用优先队列写超时,后来发现不用优先队列,因为每次相加后的值总是大于之前相加的,那么只需要用普通队列就可以了,而且这个队列是单调递增的,然后取原数组的头或者单调队列的头就可以了。但是没有考虑到(n-1)%(k-1)==0,感觉这个条件比较难想,需要实现预处理合并一次。感觉可以用数学归纳法得出。//// main.cpp// Richard//// Cre原创 2016-09-22 10:34:22 · 259 阅读 · 0 评论 -
UVA 10816 Traverl in Desert(最短路+二分)
这题精度卡了三天。#include#include#include#includeusing namespace std;const int maxn=211; const int maxm=21111; const double inf=(1e100);const double eps=1e-8;int n,m,s,t;struct HeapNode{ doubl原创 2017-01-14 10:45:45 · 387 阅读 · 0 评论