P9519-pay-题解

原题链接:Link

思路分析

首先二分比较显然,如果某一个工资能满足,更高的工资一定也能满足,可以二分。

判断函数有两种方法:

维护差分

维护差分数组的差分来实现区间加等差数列,在全部加完之后做两次前缀和。

参考代码:

统计贡献

一个员工分别可以向左向右延伸 \(x\) 个人,在这左右两个区间内的工资会对员工产生贡献。

从左到右扫一遍员工,每移动一格,左右区间就跟着移动一格。这个时候,左区间里的贡献全部减一,右区间的贡献全部加一,可以用两个变量来维护左右区间的工资数目。

预处理出第一个员工的贡献,然后从头扫到尾即可。

参考代码: