求救!!!大佬快看看,玄关,40分

P1478 陶陶摘苹果(升级版)

wch666 @ 2023-12-26 18:11:51

#3#4过了

#include<bits/stdc++.h>
using namespace std;
int n,s,a,b,ans,sum;
struct apple{
    int xi,yi;
}c[5005];
bool cmp(apple x,apple y)
{
    if(x.yi == y.yi)
        return x.xi<y.yi;
    return x.yi<y.yi;
}
int main()
{
    cin>>n>>s>>a>>b;
    for(int i=1; i<=n; i++)
        cin>>c[i].xi>>c[i].yi;
    sum=a+b;
    sort(c+1,c+n+1,cmp);
    for(int i=1; i<=n; i++)
    {
        if(sum > c[i].xi)
        {
            if(s > c[i].yi)
            {
                ans++;
                s-=c[i].yi;
            }
        }
    }
//  for(int i=1; i<=n; i++)
//      cout<<c[i].xi<<" "<<c[i].yi<<endl;
    cout<<ans;
    return 0;
}

by Coore @ 2023-12-26 18:19:44

@wch666

第一点

陶陶想知道s<0 之前最多能摘到多少个苹果。

说明只要摘的苹果花费的总力气不大于 s 就行

第二点

如果苹果的高度和陶陶能够到的最大高度是相等的,那么这个苹果是可以摘到的。

所以

for(int i=1; i<=n; i++)
    {
        if(sum > c[i].xi)
        {
            if(s > c[i].yi)
            {
                ans++;
                s-=c[i].yi;
            }
        }
    }

中的

sum > c[i].xi

改成

sum >= c[i].xi

还有

s > c[i].yi

改成

s >= c[i].yi

by wch666 @ 2023-12-27 19:59:45

已过,感谢大佬,已关~~


|