求解第四个为什么过不了

P1478 陶陶摘苹果(升级版)

可以用MarkDown吗,让我方便看看
by 花落丶宸星 @ 2018-08-14 18:05:02


```cpp #include<iostream> #include<algorithm> using namespace std; long int k[5020][2]; int main() { int n,s,a,b,ans=0,sum=0; cin>>n>>s; cin>>a>>b; int t=a+b; for(int i=1;i<=n;i++) cin>>k[i][0]>>k[i][1]; for (int i=n;i>=2;i--) for (int j=1;j<=n-1;j++) { if(k[j][1]>k[j+1][1]) { swap(k[j][1],k[j+1][1]); swap(k[j][0],k[j+1][0]); } } for(int i=1;i<=n;i++) cout<<k[i][0]<<" "<<k[i][1]<<" "; int i=1; while(ans<=s&&i<=n) { if(k[i][0]<=t) { ans+=k[i][1]; sum++; } i++; } cout<<sum<<endl; } ```
by YunJ @ 2018-08-14 18:10:42


@[花落丶宸星](/space/show?uid=36349) 我翻译了一下
by YunJ @ 2018-08-14 18:11:05


@[yuntianming](/space/show?uid=115934) 你可以先给我讲一下你的思路吗
by 花落丶宸星 @ 2018-08-15 08:31:48


@[花落丶宸星](/space/show?uid=36349) 你问版主,我只翻译了一下
by YunJ @ 2018-08-15 08:39:37


@[yuntianming](/space/show?uid=115934) 我稍微加入了一点自己的思想,还有注释,你可以看看,有问题再问我。 ```cpp #include<iostream> #include<algorithm> using namespace std; struct pg{ int gd,lq; }k[5020];//使用结构体,清晰明了 bool cmp(pg x,pg y){ if (x.lq!=y.lq) return x.lq<y.lq; else return x.gd<y.gd; } int main(){ int n,s,a,b,ans=0,sum=0; cin>>n>>s; cin>>a>>b; int t=a+b; for(int i=1; i<=n; i++) cin>>k[i].gd>>k[i].lq; /*for (int i=n; i>=2; i--) for (int j=1; j<=n-1; j++) { if(k[j][1]>k[j+1][1]) { swap(k[j][1],k[j+1][1]); swap(k[j][0],k[j+1][0]); } } */ sort(k+1,k+n+1,cmp);//快排相对来说更快,而且c++自带stl库。 //for(int i=1; i<=n; i++) // cout<<k[i][0]<<" "<<k[i][1]<<" "; /*while(ans<=s&&i<=n) { if(k[i].gd<=t) { ans+=k[i].lq; sum++; } i++; }*/ for(int i=1;i<=n;i++){ if (k[i].gd<=t&&k[i].lq<=s){ sum++; s-=k[i].lq; } }//我比较习惯于减法,如果你不习惯的话可以换成加法 cout<<sum<<endl; } ```
by 花落丶宸星 @ 2018-08-15 08:48:50


@[花落丶宸星](/space/show?uid=36349) 我不是版主,你应该@[godperkz](/space/show?uid=33469)
by YunJ @ 2018-08-15 08:49:49


@[godperkz](/space/show?uid=33469) 刚才@错了
by 花落丶宸星 @ 2018-08-15 08:50:27


@[yuntianming](/space/show?uid=115934) 对不起啊
by 花落丶宸星 @ 2018-08-15 08:50:37


@[yuntianming](/space/show?uid=115934) 你们都没换头像,我看错了
by 花落丶宸星 @ 2018-08-15 08:50:50


| 下一页