题解:P14934 「FAOI-R10」Add Problem
sol
很简单的一道思考题。考虑到将所有数调到整个序列的最大值,那就算最大值与最小值的差,设为 \(x\),再计算 \(x\) 是 \(m\) 的多少倍,向上取整。也就是最小值要加上几个 \([0,m]\) 之间的数才能到达最大值,这就是答案了。
:::info[code]{open}
#include<bits/stdc++.h>
using namespace std;
long long n,m;
long long a[500010];
long long Mx=INT_MIN;
long long Mn=INT_MAX;
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
Mx=max(a[i],Mx);
Mn=min(a[i],Mn);
}
int x=Mx-Mn;
cout<<(int)ceil(1.0*x/m);
return 0;
}

浙公网安备 33010602011771号