又是一道以区间和作为定点的差分约束,看了冯威的论文才会的,不过他的论文里漏了一个条件
设s[i]为[0,i]雇佣的人数和,num[i]为i时刻可雇佣人数,need[i]为i时刻需要人数,则
0<=s[i]-s[i-1]<=num[i]
s[i]-s[i-8]>=need[i] (8<=i<=23)
s[i]+(s[23]-s[i+16])>=need[i] (0<=i<=8)
另外,s[23]-s[0]>=sum(总雇佣人数)
第三个等式化为s[i]-s[i+16]>=need[i]-s[23],只要二分s[23],即最后答案就可以解决问题
代码: