HDU 4296 Buildings

PDV = s - w[i] - s[i] = s - (w[i] + s[i])  每次选出里面的w + s 最大的即可,排序+贪心。


#include"iostream"
#include"algorithm"
using namespace std;
struct node{
    int w,s;
};
node a[100005];

int cmp(node a,node b)
{
    return a.w+a.s>n)
    {

        for(int i=0;i>a[i].w>>a[i].s;

        sort(a,a+n,cmp);
        long long maxx=-1e9,sum=0;
        for(int i=0;imaxx)  maxx=sum-a[i].s;
            sum+=a[i].w;
        }
        if(maxx<0) cout<<0<


你可能感兴趣的:(解题报告)