lizhaoqi @ 2023-12-18 20:51:46
#include<bits/stdc++.h>
using namespace std;
int n,s,a,b,cah,cnt;
struct node{
int high,stren,can=1;
}apple[5005];
int cmp(node x,node y){
if(x.can>y.can){
return x.can>y.can;
}else{
return x.stren<y.stren;
}
}
int main(){
cin>>n>>s>>a>>b;
cah=a+b;
for(int i=1;i<=n;i++){
cin>>apple[i].high>>apple[i].stren;
if(apple[i].high>cah){
apple[i].can=0;
}
}
sort(apple+1,apple+n+1,cmp);
int i=1;
while(s>0){
if(apple[i].can==0){
break;
}
s-=apple[i].stren;
cnt++;
// cout<<apple[i].high<<" "<<apple[i].stren<<" "<<apple[i].can<<" "<<s<<endl;
i++;
}
if(s<0){
cnt--;
}
cout<<cnt;
return 0;
}
(备注:node是苹果的相关信息,high是高度,stren是花费的力气,can是能否能够到)
by lizhaoqi @ 2023-12-18 20:52:50
请各位大佬帮忙看一下哪里出的问题,谢谢!
by Ahws_rwhy @ 2023-12-18 20:57:06
@lizhaoqi
#include <bits/stdc++.h>
using namespace std;
int n,s,a,b,x,high[100000],y,strength[100000];
long long rum,num;
int main()
{
cin>>n>>s; //输入苹果数和力气
cin>>a>>b; //输入椅子的高度和手伸直的最大长度
int sum=a+b; //总共能够到的高度应为椅子高度+手能够到的高度
for(int i=1;i<=n;i++)
{
cin>>x>>y;//读入 苹果高度和 摘这个苹果需要的力气
if(x<=sum)
{
high[rum]=x;//更新高
strength[rum]=y; //更新力气
rum++; //更新
}
}
sort(strength,strength+rum+1);//对所需要力气进行排序
for(int i=1;i<=n;i++)
{
s-=strength[i]; //减去力气
if(s<0) //判断超过还是不够力气
{
break;
}
num++;//否则更新苹果数
}
cout<<num; //输出
return 0;
}
自己看一下吧。
by lizhaoqi @ 2023-12-19 21:25:36
@rwhy 感谢您!