Chri_K

运输(贪心)
#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(int a,int b)
{
    return a>b;
}
int w[10010];
int main()
{
    int n,k;
    cin>>n>>k;
    for(int i=1;i<=n;i++)
    {
        cin>>w[i];
    }
    sort(w+1,w+n+1,cmp);
    int sum=0;
    int j=0;
    for(int i=1;i<=n-1;i++)
    {
        sum=(w[i]+w[i+1])/k;
        j=i+1;
        while(sum<w[j+1])
        {
            if(j==n)
            {
                break;
            }
            w[j]=w[j+1];
            j++;
        }
        w[j]=sum;
    }
    cout<<w[n];
    return 0;
}
//5 2 
//1 2 3 4 5

每次选当前最大的两个数合并,直到只剩最后一件物品

(越先选的数被kk除的次数也就越多,为了使结果尽可能小,肯定是让越大的数除kk的次数越多越好

posted on 2020-10-15 12:25  Chri_K  阅读(76)  评论(0编辑  收藏  举报