Codeforces 1373F - Network Coverage (二分)
标签:https const ORC ++ 大于等于 math set typedef namespace
Description
思路
如果我们知道某一个站\(b_i\)到对\(a_i\)的贡献是多少,那么就可以用贪心求解(因为这样我们就知道\(b_i\)对\(a_{i+1}\)的贡献,从而知道\(b_{i+1}\)对\(a_{i+1}\)...)。所以可以考虑二分\(b_i\)对\(a_i\)的贡献。
可以把\(b_i\)对\(a_i\)的贡献看作流水,这里\(a_i\)就是容量。
确定了\(b_i\)对\(a_i\)的贡献(设为c)后,有两种结果:
- 一种是断流(由于\(b_i\)对\(a_i\)贡献太多,导致对\(a_{i+1}\)贡献过少,导致后面断流);
- 一种是流一圈后由\(b_{i-1}\)流回\(a_i\)(设流回的量为x)。对于后一种,\(b_i\)对\(a_i\)的贡献每减少1,x至多增加1,因为流一圈过程中可能有地方满流了,继续增加流量,x也不会增加。
所以二分找到使得流回量x>0的最大的c。这个就是边界情况,判断x+c是否大于等于\(a_i\)即可。
这里取\(a_i\)为\(a_1\)。
#include
#include
#include
#include
#include
Codeforces 1373F - Network Coverage (二分)
标签:https const ORC ++ 大于等于 math set typedef namespace
原文地址:https://www.cnblogs.com/limil/p/13196715.html
评论