这道题只要会自定义cmp恰当地进行排序,其他部分没有什么大问题。


上代码:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int n,s,h1,h2,cnt;
 4 struct apple{
 5     int height,ns;//height为苹果高度,ns是所需要的力气 
 6 }a[10000];
 7 bool cmp(apple x,apple y){
 8     return x.ns<y.ns;//根据所需要的力气由高到低进行排序 
 9 }
10 int main(){
11     cin>>n>>s;
12     cin>>h1>>h2;
13     int h=h1+h2;//能够到的高度为椅子和身高总和 
14     for(int i=1;i<=n;i++){
15         cin>>a[i].height>>a[i].ns;
16     }//输入每个苹果的高度和所需要的力气 
17     sort(a+1,a+n+1,cmp);//根据要求排序 
18     for(int i=1;i<=n;i++){
19         if(a[i].height>h)continue;
20         //无法摘到,下一层循环
21         if(a[i].ns>s)break;
22         //如果所需要的力气超出剩余力气,结束循环 
23         s-=a[i].ns;//总力气减去这个苹果需要的力气 
24         cnt++;
25     }
26     cout<<cnt;
27     return 0;
28 }
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。