60分求助!

P1478 陶陶摘苹果(升级版)

guxiaoqing @ 2024-11-10 19:06:22


#include <bits/stdc++.h>
using namespace std;
struct apple{
    int gd;
    int lq;
}a1[1000000];
apple b1[1000000];
int cmp(apple a,apple b){
    if(a.lq<=b.lq){
        return 1;
    }else{
        return 0;
    }
}
int main()
{
    int n,s,a,b;
    cin>>n>>s>>a>>b;
    for(int i=1;i<=n;i++){
        cin>>a1[i].gd>>a1[i].lq;
    }
    int l=1;
    for(int i=1;i<=n;i++){
        if(a+b>=a1[i].gd){
            b1[l].gd=a1[i].gd;
            b1[l].lq=a1[i].lq;
            l++;
        }
    }
//  cout<<endl;
//  for(int i=1;i<l;i++){
//      cout<<b1[i].gd<<" "<<b1[i].lq<<endl;
//  }
    sort(b1+1,b1+l,cmp);
//  for(int i=1;i<l;i++){
//      cout<<b1[i].gd<<" "<<b1[i].lq<<endl;
//  }
    int i=1,cnt=0;
    while(s>=0){
        s-=b1[i].lq;
        cnt++;
        i++;
    }
    cout<<cnt-1;
    return 0;
}

by guxiaoqing @ 2024-11-10 19:12:56

@guxiaoqing 悬赏六坤元


by Estelle_N @ 2024-11-10 19:29:20

@guxiaoqing

#include <bits/stdc++.h>
using namespace std;
struct apple{
    int gd;
    int lq;
}a1[1000000];
apple b1[1000000];
int cmp(apple a,apple b){
    if(a.lq<b.lq){
        return 1;
    }else{
        return 0;
    }
}
int main()
{
    int n,s,a,b;
    cin>>n>>s>>a>>b;
    for(int i=1;i<=n;i++){
        cin>>a1[i].gd>>a1[i].lq;
    }
    int l=1;
    for(int i=1;i<=n;i++){
        if(a+b>=a1[i].gd){
            b1[l].gd=a1[i].gd;
            b1[l].lq=a1[i].lq;
            l++;
        }
    }
//  cout<<endl;
//  for(int i=1;i<l;i++){
//      cout<<b1[i].gd<<" "<<b1[i].lq<<endl;
//  }
    sort(b1+1,b1+l,cmp);
//  for(int i=1;i<l;i++){
//      cout<<b1[i].gd<<" "<<b1[i].lq<<endl;
//  }
    int i=1,cnt=0;
    while(i < l && s>=0){
        s-=b1[i].lq;
        if(s >= 0)
            cnt++;
        i++;
    }
    cout<<cnt;
    return 0;
}

by Estelle_N @ 2024-11-10 19:33:48

@Estelle_N

  1. cmp 函数应该为 <。因为如果写 <=,当两个变量 a,blq 相等时,cmp(a, b)cmp(b, a) 都为 1

  2. 最后一个 while 循环应该 i < l。不然,如果力气足够大,就会一直不停摘苹果。

  3. cnt 的地方,如果按照你之前的写法,比如最后一个苹果刚刚好用完力气,由于还有 i < l 的限制,答案会少计算。


by guxiaoqing @ 2024-11-11 21:25:52

@Estelle_N 谢谢大佬


|