I.LZC增肥(ACM实验室新生赛)

贪心 以脂肪值作为比较大小的依据,重载小于号,按照脂肪值从大到小排序,之后贪心选择。

#include<cstdio>
#include<iostream>
using namespace std;
 int n,m,k;
 int ans=0;
 struct nn
 {
     int l,r;
     bool operator < (nn &b)const
   {       return l>b.l;
    }
 }d[10010];
 int c[10010];
 int main()
 {
     cin>>n>>m>>k;
     for(int i=1;i<=k;i++)     
     {         
      cin>>c[i];
     }
     for(int i=1;i<=n;i++) {  
         cin>>d[i].l;
         cin>>d[i].r;
     }
     sort(d+1,d+n+1);
     for(int i=1;i<=n;i++)
     {
         if(m&&c[d[i].r])
         {
             ans+=d[i].l;
             m--;
             c[d[i].r]--;
         }
     }
     cout<<ans<<endl;
     return 0;
 }
 

发表回复