QYZ2011 @ 2023-04-01 22:17:02
只蒙对了一个点
by QYZ2011 @ 2023-04-01 22:32:52
尝试改之后分数没变,但有个点从wa到re了
by CWB0506 @ 2023-04-02 13:05:27
代码发一下
by CWB0506 @ 2023-04-02 13:08:38
我看得到
by CWB0506 @ 2023-04-02 13:10:13
你会结构体吗
by QYZ2011 @ 2023-05-01 14:32:36
@CWB0506 会
by CWB0506 @ 2023-05-01 14:49:22
会用结构体写吗
by CWB0506 @ 2023-05-01 15:10:56
给你看一下代码 注释见代码
//本题主旨:手的长度加上凳子的高度还够不到的苹果就不用考虑,接下来想要摘到的苹果最多那就要摘用的力气最小的苹果,最后判一下力气是否用完了(即是否还可以摘苹果)
//代码思路:
//用结构体输入( 利于排序和利于判断是否可以摘到(就是高度够不够)用flag维护)
//排序
//摘力气小的苹果,高度不够的不能摘,flag的作用在这,最后看一下力气是否用完
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n,s,a,b;
ll h,ans;
struct sd{
int x,y;
bool flag;
}nf[5005];
bool cmp(sd a,sd b){
return a.y<b.y;
}//排序规则
int main(){
cin>>n>>s>>a>>b;
h=a+b;
for(int i=1;i<=n;i++){
cin>>nf[i].x>>nf[i].y;
if(nf[i].x>h) nf[i].flag=0;
else nf[i].flag=1;//高度够不够
}
sort(nf+1,nf+n+1,cmp);//结构体排序
for(int i=1;i<=n;i++){
if(nf[i].flag==1&&nf[i].y<=s){
ans++;
s-=nf[i].y;
}
else if(nf[i].y>s){
break;
}//力气还够不够
}
cout<<ans;
return 0;
}