![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二分
青禾script
这个人太弱,所以也不知道能写什么23333
展开
-
[BZOJ 2654] tree · 二分答案
根据MST算法的性质,每次选权值最小的边,所以我们可以给白边加上或减去一个权值k,令白边被少选或者多选,二分k即可。 PS:机房里大神突然讨论起一个好像很有道理但实际上并没用什么卵用的问题:如果当某一个权值有很多条白边和黑边,如果加上一个k的时候只选到了need-1条边,而加上k+1的时候会选到need+1条边,怎么办? 一开始好像觉得这个问题很神,但是突然发现很扯有没有啊!这个时候白边和黑原创 2015-06-11 21:12:57 · 827 阅读 · 0 评论 -
[Tyvj 1359] 收入计划 · 二分答案
比较经典的二分答案题。 可行解一定是在最大的一次工资和工资总和这段区间里面,所以我们就对这个区间二分答案,然后扫一遍检验。 #include #include #include #include using namespace std; const int N=100005; int n,m,data[N],l,r,mid,ans,Max,sum; bool check() {原创 2015-06-11 14:10:00 · 936 阅读 · 0 评论 -
[BZOJ 2083] Poi 2010 Intelligence test · 二分
一开始以为是个神题后来发现是个大水题。。。 next[i][j]表示数字i在原序列中出现第j次的位置,now用来记录对于当前的b[i],最小的合法位置是多少。每次二分更新now,如果now>n说明在原序列中没有合法的b[i]存在,直接退出。 二分必须要手写,因为vector里用lower_bound返回的并不是下标值而是迭代器(具体是什么我也不清楚)。 PS:机房小伙伴用倍增的方法写但是超时原创 2015-06-12 22:00:15 · 778 阅读 · 0 评论 -
[HDU 2692] Ball · 二分答案+最短路
这是个WA的程序。。。有待填坑。。。不过我也没看出来哪里错了。。。这只是个草稿。。。 #include #include #include using namespace std; #define sc scanf("%d%d",&c,&r) #define rep(i,c) for (int i=1;i<=c;i++) const int inf=1e9+7; cons原创 2015-09-04 21:27:41 · 700 阅读 · 0 评论