Equalize the Remainders
题 意:给你一个大小为n的数组,m是n的一个divisor。每次可以对ai+1,问最少的次数让数组中的每个元素除m 的余数 从0到m-1 各有n/m个。
*数据范围:
1<=n<=2e5
1<=m<=n
输入样例:
6 3
3 2 0 6 10 12
输出样例:
3
3 2 0 7 10 14
思 路:这题是某一个区域赛签到题的一个基础。贪心的思路,如果这个余数已经达到n/m个了,那么就把下一个余数是这个的改成这个余数最近的且还没有满的。
用一个set先把所有的余数放进去。set是有序的,*set.rbegin()返回set中最小的一数,
*set.begin()返回set中最大的一个数,*set.lower_bound(x) 连二分查找都有。
#include<bits/stdc++.h>
using namespace std;