2 条题解

  • 1
    @ 2025-12-7 21:33:04

    问题本质:每次选最大的 x 个非零元素各减 1,直到所有元素为 0,求最少操作次数。

    #include <stdio.h>
    typedef long long ll;  
    int main() {
        int t;
        scanf("%d",&t);
        while (t--){
            int n,x;
            scanf("%d%d",&n,&x);
            ll sum=0,max_a=0;  
            for (int i=0;i<n;++i) {
                ll num;
                scanf("%lld",&num);
                sum+=num;
                if (num>max_a) {
                    max_a=num;
                }
            }
            ll cnt_sum=(sum+x-1)/x;
            ll ans=(cnt_sum>max_a)?cnt_sum:max_a;
            printf("%lld\n",ans);
        }
        return 0;
    }
    
    • @ 2025-12-7 21:39:29

      ll cnt_sum=(sum+x-1)/x代表的意思是操作次数至少等于总元素和除以 x 的向上取整

信息

ID
1196
时间
1000ms
内存
256MiB
难度
4
标签
(无)
递交数
56
已通过
25
上传者