60分是时间问题吗

P1478 陶陶摘苹果(升级版)

ywhzt @ 2017-09-04 21:58:47

#include<bits/stdc++.h>
using namespace std;
struct ccc{
    int h;
    int l;
};
int main()
{
    int c,d,n,s,a,b,e,f;
    cin>>n>>s>>a>>b;
    ccc g[n];
    for(c=0;c<n;c++)
    {
        cin>>e>>f;
        if(e>a+b)
        continue;
        g[c].h=e;
        g[c].l=f;
    }
    for(c=0;c<n;c++)
     for(d=c+1;d<n;d++)
     {
            if(g[c].l>g[d].l)
            swap(g[c],g[d]);
    }
    e=0;
    for(c=0;c<n;c++)
    {
        s-=g[c].l;
        if(s>0)
        e++;
        else
        break;
    }
    cout<<e<<endl;
}

by MscWood @ 2017-09-05 21:08:21

80分程序求改


by MscWood @ 2017-09-05 21:08:34

#include<iostream>
#include<cstdio>
#include<algorithm>
struct apple {int h,t;};
apple a[5100],b[5100];  //结构体h表示高度,t表示消耗体力 
int camp(apple x,apple y)
{
    if(x.t <y.t )return 1;
    else return 0;
}    //自定义排序函数 
using namespace std;
int main()
{
    int ans=0,n,s,sh,bd,j,num;
    j=0;
    cin>>n>>s;
    cin>>bd>>sh;
    for(int i=1;i<=n;i++) cin>>a[i].h >>a[i].t ;  //读入 
    for(int i=1;i<=n;i++)
    {
        if(a[i].h<=sh+bd) 
        {   
            j++;
            b[j].h=a[i].h;
            b[j].t=a[i].t;
        }
    }   //把所有能摘到的筛选出来     
    num=j;
    sort(b+1,b+num+1,camp);   //按体力消耗有小到大排序 
    j=1;
    while(1)
    {
        s-=b[j].t;   //如果摘了某个体力为负,就跳出(因为体力按小到大排序了,后面更大) 
        if(s<0) break;
        else {ans++; j++;}  //不然个数加一 
    }
    cout<<ans;  //输出答案 
    return 0;
}

|