结构体蒟蒻80分卑微求助!!!

P1478 陶陶摘苹果(升级版)

liujia_31 @ 2024-01-31 21:40:01

改来改去测试点一就是不过 其他都对 来个人救救孩子吧 生无可恋了QAQ

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

by Super_Cube @ 2024-01-31 21:52:21

@liujia_31 拿你的代码做了尽可能少的改动,凑合着看吧。

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

by Super_Cube @ 2024-01-31 21:53:43

@liujia_31 首先 ans 的初始值不懂为什么你要设置,其次题目中的条件是 s<0 而不是 s\leqslant0,所以下面循环里是 s >= c[i].y


by liujia_31 @ 2024-02-01 09:07:47

@Super_Cube 昂 看懂了看懂了 没注意题目条件[捂脸] 谢谢大佬 谢谢大佬


|