题意
给一个\(n\)个点的环,每个点是一个容量为\(a[i]\)的空水池,给\(n\)个水桶,第\(i\)个桶里有\(b[i]\)升水,第\(i\)个桶只能给第\(i\)和第\(i+1\)个水池加水,特殊的,第\(n\)个桶只能给第\(n\)个和第\(1\)个水池加水,问是否能将所有水池加满。
分析
二分\(b[1]\)给\(a[1]\)加了多少水,我们可以贪心的得到\(b[1]\)给\(a[2]\)加了多少水,\(b[2]\)给\(a[2]\)加了多少水....
有两种情况:
- 断流,因为\(b[1]\)给\(a[1]\)加了太多的水,导致无法加满\(a[2],a[3],\dots,a[n]\),要减少\(b[1]\)对\(a[1]\)的供水量。
- 能加满\(a[2],a[3],\dots,a[n]\),考虑增加\(b[1]\)对\(a[1]\)的供水量,因为如果仍能加满\([2,n]\)的水池,在贪心过程中因为水池容量限制造成的损耗会减少,则\(b[1]\)和\(b[n]\)对\(a[1]\)的总供水量会增加。
Code
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include