40分求调

P1478 陶陶摘苹果(升级版)

MengXi1128 @ 2024-07-22 15:34:24

不会贪啊啊啊啊啊啊啊啊啊啊

#include<bits/stdc++.h>
using namespace std;
    long long a,b,c,d,aa[5001],bb[5001],e,f=0;
int main(){
    cin>>a>>b>>c>>d;
    for(int i=1;i<=a;i++)cin>>aa[i]>>bb[i];
    e=c+d;
        for(int i=1;i<=a;i++){
            if(aa[i]>e)bb[i]=0;
        }
        for(int j=1;j<=b;j++){
            for(int i=1;i<=a;i++){
            if(j==bb[i]){
                f++;
                b-=j;
            }
        }   
    }       
    cout<<f;
    return 0;}

by a18981826590 @ 2024-07-22 15:38:32

@MengXi1128

#include<bits/stdc++.h>
using namespace std;
int a,b,c,l,n,r,s;
struct z{
    int x,y;
}w[5010];
bool d(z p,z q){
    return p.x<q.x;
}
bool e(z p,z q){
    return p.y<q.y;
}
int main(){
    scanf("%d%d%d%d",&n,&s,&a,&b);
    for(int i=0;i<n;i++) scanf("%d%d",&w[i].x,&w[i].y);
    r=n-1;
    sort(w,w+n,d);
    while(l<=r){
        if(w[l+(r-l)/2].x<=a+b) l+=(r-l)/2+1;
        else r=l+(r-l)/2-1;
    }
    sort(w,w+l,e);
    for(int i=0;i<l;i++){
        if(w[i].y>s) break;
        s-=w[i].y;
        c++;
    }
    printf("%d",c);
    return 0;
}

|