本萌新刚入洛谷,希望大佬照顾照顾我(帮我康康哪里错了)

P1478 陶陶摘苹果(升级版)

北落南殇 @ 2019-12-29 11:43:58


### #include<cstdio>
### using namespace std;
## int main(){
    int n,s;
    int a,b;
    int x[101],y[101];
    scanf("%d%d",&n,&s);
    scanf("%d%d",&a,&b);
    for(int i=1;i<=n;i++)scanf("%d%d",&x[i],&y[i]);
    int c=a+b,ans=0;
    int temp,k;
    for(int i=2;i<=n;i++){
        temp=y[i];
        k=1;
        while(y[k]<=temp&&k<i)k++;
        for(int j=i-1;j>=k;j--)y[j-1]=y[j];
        y[k]=temp;
    }
    for(int i=1;i<=n;i++){
        if(c>=x[i]&&s>=y[i]){
            ans++;
            s-=y[i];
        }
    }
    printf("%d",ans);
    return 0;
## }

by 浪花似月 @ 2019-12-29 12:16:54

#include<bits/stdc++.h>
using namespace std;
const int maxN=5000+10;
struct Node{
    int a,b;
}apple[maxN];
int n,m,x,y,t=0,ans=0,lost[maxN];
int cmp(int a,int b){
    return a<b;
}
int main(){
    cin>>n>>m>>x>>y;
    for(int i=0;i<n;i++){
        cin>>apple[i].a>>apple[i].b;
        if(x+y>=apple[i].a){
            lost[t]=apple[i].b;
            t++;
        }
    }
    if(n==0||m==0){
        cout<<0;
        return 0;
    }
    sort(lost,lost+t,cmp);
    for(int i=0;i<t;i++){
        m-=lost[i];
        if(m<0){cout<<ans;return 0;}
        ans++;
    }
    return 0;
}

by 浪花似月 @ 2019-12-29 12:18:07

先找可以采摘的,再排序,当m<0是就输出


by Thomas_ @ 2019-12-29 12:34:56

有点复杂了


by Thomas_ @ 2019-12-29 12:35:37

#include<bits/stdc++.h>
using namespace std;
const int maxn=10001;
int n,s,a,b,apple_weight[maxn],apple[maxn];
int main()
{
    int cnt=0,sum=0;
    cin>>n>>s>>a>>b;
    for(int i=1;i<=n;i++)
    {
        int c,d;
        cin>>c>>d;
        if(a+b>=c)
        {
            apple_weight[++cnt]=d;
            apple[cnt]=c;
        }
    }
    for(int i=1;i<=cnt;i++)
        for(int j=1;j<=cnt;j++)
        {
            if(apple_weight[i]<apple_weight[j])
            {
                swap(apple_weight[i],apple_weight[j]);
                swap(apple[i],apple[j]);
            }
        }
    for(int i=1;i<=cnt;i++)
    {
        if(s-apple_weight[i]>=0)
        {
            sum++;
            s-=apple_weight[i];
        }
    }
    cout<<sum;
    //for(int i=1;i<=cnt;i++) cout<<apple[i]<<' '<<apple_weight[i]<<endl;
    return 0;
}

这样会比较简单


by Thomas_ @ 2019-12-29 12:35:45

@北落南殇


by 北落南殇 @ 2019-12-29 14:03:45

@Thomas_ @浪花似月 那我具体的问题出在哪里呢?(你们的代码我已经看懂了)


by Thomas_ @ 2019-12-29 14:14:49

@北落南殇 你的c=a+b是什么意思


by 北落南殇 @ 2019-12-29 14:19:48

@Thomas_ 就是陶陶加板凳的高度


by Thomas_ @ 2019-12-29 14:20:49

@北落南殇 你排个序看看行不行


by Thomas_ @ 2019-12-29 14:21:07

@北落南殇 加载c后面


| 下一页