aespa_karina @ 2022-07-28 16:49:38
#include<iostream>
using namespace std;
int main(){
int n,s,a,b,x[1000],y[1000],l;
cin>>n>>s>>a>>b;
for(int i=1;i<=n;i++){
cin>>x[i]>>y[i];
}
for(int i=1;i<=n;i++){
for(int j=i+1;j<=n;j++){
if(y[i]>y[j]){
swap(y[i],y[j]);
swap(x[i],x[j]);
}
}
}
for(int i=1;i<=n;i++){
if(a+b>=x[i]){
s=s-y[i];
l=l+1;
if(s<=0){
break;
}
}
}
cout<<l;
return 0;
}
```cpp
by L_zaa_L @ 2022-07-28 17:07:30
@Gnaeriselr_74 这是你的代码改之后的代码,你看看
#include<iostream>
using namespace std;
int n,s,a,b,x[10001],y[10001],l;
int main(){
cin>>n>>s>>a>>b;
for(int i=1;i<=n;i++){
cin>>x[i]>>y[i];
}
for(int i=1;i<=n;i++){
for(int j=i+1;j<=n;j++){
if(y[i]>y[j]){
swap(y[i],y[j]);
swap(x[i],x[j]);
}
}
}
for(int i=1;i<=n;i++){
if(a+b>=x[i]){
s=s-y[i];
if(s<0){
break;
}
l=l+1;
}
}
cout<<l;
return 0;
}
by YangjinRun @ 2022-07-28 17:09:52
for(int i=1;i<=n;i++){
if(a+b>=x[i]){
s=s-y[i];
l=l+1;
if(s<=0){
break;
}
}
}
if里的条件再加一个
s-y[i]>=0
气力值还够摘才能摘
by YangjinRun @ 2022-07-28 17:12:22
@Gnaeriselr_74
说明/提示
对于100% 的数据,n≤5000, a\≤50,≤200, s≤1000, xi≤280, yi≤100。
看题目数据大小是个好习惯
数组开小了
by Sunny郭 @ 2022-07-28 17:20:19
有三个问题哦 1,看看满分的数据范围,检查数组开够没有。 2,最后一个循环中关于s判断等于0可不可以要想一下。 3,也是这个循环,检查一下“l=l+1”位置应该放在哪里,是判断再加还是加在判断
by aespa_karina @ 2022-07-28 20:51:41
@YangjinRun 哈哈哈哈哈哈笑死了不过我看了之后恍然大悟
by aespa_karina @ 2022-07-28 20:54:06
@Sunny郭 哦~现在就去改
by aespa_karina @ 2022-07-28 21:22:06
我过啦我过啦感谢大佬们帮助本蒟蒻!!特别感谢@YangjinRun