题解: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;
}
posted @ 2026-05-24 13:35  Synthx  阅读(7)  评论(0)    收藏  举报