新人求修改

P1478 陶陶摘苹果(升级版)

a85382078 @ 2017-09-13 21:44:33

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int f[5001];
int w[5001],c[1001];
int main()
{  int n,s,a,b,ans=0;
   cin>>n>>s;
   cin>>a>>b;
   for(int i=0;i<n;i++)
      {scanf("%d%d",&w[i],&c[i]);}
   for(int i=0;i<n;i++)
      {if(w[i]>a+b) 
         {for(int j=i;j<n;j++)
             {w[j]=w[j+1];
              w[j+1]=0;
              c[j]=c[j+1];
              c[j+1]=0;
             }
             n--;
         }
      } 
      sort(c,c+n);
      for(int y=0;y<n;y++)
         { s-=c[y];
            if(s<0) break;
            ans++ ;
         }
    printf("%d",ans);
    return 0;
}

by 青衫白叙 @ 2017-09-25 18:55:59

可以参考一下我的代码。。。

#include<cstdio>
#include<algorithm>
using namespace std;
struct node{int h,w;}a[5001];
bool cmp(node a, node b)
{return (a.w < b.w)||(a.w == b.w && a.h < b.h);}
int n, s, x, b, ans=0;
int main() {
    scanf("%d%d%d%d",&n,&s,&x,&b);b+=x;
    for(int i=1; i<=n; i++) scanf("%d%d",&a[i].h,&a[i].w);
    sort(a+1,a+n+1,cmp);
    for(int i=1; i<=n; i++) if(a[i].h <= b ) if(a[i].w <= s) ans++,s-=a[i].w;else break;
    printf("%d",ans);
    return 0;
}

|