2019牛客暑期多校訓練營(第六場)D Move【模擬】

題目鏈接:https://ac.nowcoder.com/acm/contest/886/D
思路:數據很水,根據題意暴力數組模擬就okok了。也可以優化用STL的multiset模擬會更快。
AC代碼:

#include<bits/stdc++.h>
using namespace std;
int v[1010];
int vis[1010];
int n,k;
bool cmp(int x,int y)
{
    return x>y;
}
bool solve(int vv)
{
    for(int i=0;i<n;i++){
        vis[i]=0;
    }
    int cnt=0;
    for(int i=0;i<n;i++){
        int sum=vv;
        if(vis[i]==0){
            cnt++;
            for(int j=i;j<n;j++){
                if(vis[j]==0&&v[j]<=sum){
                    sum-=v[j];
                    vis[j]=1;
                }
            }
        }
    }
    return (cnt==k?true:false);
}
int main()
{
    int t;
    cin>>t;
    int Case=0;
    while(t--){
        cin>>n>>k;
        int sum=0;
        for(int i=0;i<n;i++){
            cin>>v[i];
            sum+=v[i];
        }
        sort(v,v+n,cmp);
        int v=ceil(1.0*sum/(1.0*k));
        while(!solve(v)){
            v++;
        }
        printf("Case #%d: %d\n",++Case,v);
    }
    return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章