求大佬帮忙看看为什么第三个和第五个测试点错了

P1478 陶陶摘苹果(升级版)

_tourist @ 2019-02-16 16:41:56

#include<iostream>
using namespace std;

int n,s,a,b,ans=0,t1,t2;
int xi[5010],yi[5010];

int main(){
    cin>>n>>s>>a>>b;
    a+=b;
    for(int i=1;i<=n;i++)
        cin>>xi[i]>>yi[i];
    for(int i=1;i<n;i++)
        for(int j=i+1;j<=n;j++){
            if(yi[i]>yi[j]){
                t1=xi[i],t2=yi[i];
                xi[i]=xi[j],yi[i]=yi[j];
                xi[j]=t1,yi[j]=t2;
            }
        }
    for(int i=1;i<=n;i++){
        if(xi[i]<=a&&yi[i]<=s){
            ans++;
            s-=yi[i];
        }
    }
    cout<<ans;
    return 0;
}

by Courteli @ 2019-02-16 17:50:58

不如看看第二个题解 题解

逃~


by 花园Serena @ 2019-02-16 17:57:41

排序的问题吧


by 花园Serena @ 2019-02-16 17:58:39

哦...不是


by 花园Serena @ 2019-02-16 18:06:11

这是题解吧老哥...不过你60分的那个我看了

只要把排序里的 x1[i]>x2[k]改成x2[i]>x2[k]应该就好了

@Ling2


by 花园Serena @ 2019-02-16 18:12:18

因为你那一段的程序的意思应该是将x和x2按x2从小到大排序...所以只能比较x2。而你却比较了x2与x1两个与排序没有关系的数组...自然会wa掉,再说了,看题解也要理解吧,像你这样是不行的


|