陶陶摘果子WA

#include<bits/stdc++.h>
using namespace std;
struct hello{
    int x,y;//苹果高度x,需要的力气y 
}c[2005];
bool cmp(hello a,hello b){
	return a.y<b.y; 
}
int main(){
	int n,s,a,b;//n个苹果,剩下的力气s,椅子高度a,手伸直的最大高度b。
	cin>>n>>s>>a>>b;
	for(int i=1;i<=n;i++)
	{
		cin>>c[i].x>>c[i].y;
	}
	sort(c+1,c+n+1,cmp);
     int ans=0;
		for(int i=1;i<=n;i++)
		{
		while(s>=0)
			if(b+a>=c[i].x and c[i].y<=s)
			{
				s-=c[i].y;
				ans++;
			}
		}
	cout<<ans;
}

题目描述:

又是一年秋季时,陶陶家的苹果树结了n个果子。陶陶又跑去摘苹果,这次她有一个a公分的椅子。当他手够不着时,他会站到椅子上再试试。这次与NOIp2005普及组第一题不同的是:陶陶之前搬凳子,力气只剩下s了。当然,每次摘苹果时都要用一定的力气。陶陶想知道在s<0之前最多能摘到多少个苹果。现在已知n个苹果到达地上的高度xi,椅子的高度a,陶陶手伸直的最大长度b,陶陶所剩的力气s,陶陶摘一个苹果需要的力气yi,求陶陶最多能摘到多少个苹果。

输入格式:

第1行:两个数 苹果数n,力气s。

第2行:两个数 椅子的高度a,陶陶手伸直的最大长度b。

第3行~第3+n-1行:每行两个数 苹果高度xi,摘这个苹果需要的力气yi。

输出格式:

只有一个整数,表示陶陶最多能摘到的苹果数。

样例输入1:

8 15

20 130

120 3

150 2

110 7

180 1

50 8

200 0

140 3

120 2

样例输出1:

4

约定:

所有数据:n<=5000 a<=50 b<=200 s<=1000

2 个赞

思路在代码里
这好像是洛谷的题吧

#include<iostream>
using namespace std;
int c[101];//定义一百个桶子,c[i]代表用i个力气能摘到的苹果的数目
int main(){
    int n,s,h,a,b,i,t=0; 
    cin>>n>>s>>h>>i;h+=i;//输入,借用"i"将淘淘用凳子达到的最大高度复制给"h"
    for(i=1;i<=n;i++){
        cin>>a>>b;
        if(a<=h)c[b]++;//如果能摘到,就在用b个力气能摘到苹果的桶子中加一
    }
    //接下来 按力气从小到大选苹果
    for(i=0;i<=100&&s>=0;i++){//注意要从"0"开始,有苹果是免费的
        while(c[i]){//一个桶子里也可有多个苹果
            s-=i;//减去摘这个苹果的力气
            t++;//摘到的苹果数加一 
            c[i]--;//桶里的苹果减一个 
            if(s<0){//当力气没了时结束 
                t--;//这个苹果没有足够力气摘不了(s<0) 
                break;
            }
        }
    }
    cout<<t;//输出。 
    return 0;

有用的话给个解决方案呗

2 个赞

不给

2 个赞

666

1 个赞

给嘛

1 个赞

a啥

1 个赞

有种不祥的预感

1 个赞
2 个赞

#include
#include
using namespace std;
struct apple{
int a,b;
}r[100005];
bool cmp(apple a,apple b){
return a.b<b.b;
}
int n,a,b,s,sum=0;
int main(){
cin>>n>>s;
cin>>a>>b;
for(int i=0;i<n;i++){
cin>>r[i].a>>r[i].b;
}
sort(r,r+n,cmp);
for(int i=0;i<n;i++){
if(s>=r[i].b && r[i].a<=a+b){
sum++;
s-=r[i].b;
}

    }
    cout<<sum;
    return 0;

}

2 个赞

解决了吗

2 个赞

:face_with_open_eyes_and_hand_over_mouth: :face_with_hand_over_mouth:

2 个赞

给 .

1 个赞

#include<bits/stdc++.h>
using namespace std;
struct apple{
int a,b;
}r[100005];
bool cmp(apple a,apple b){
return a.b<b.b;
}
int n,a,b,s,sum=0;
int main(){
cin>>n>>s;
cin>>a>>b;
for(int i=0;i<n;i++){
cin>>r[i].a>>r[i].b;
}
sort(r,r+n,cmp);
for(int i=0;i<n;i++){
if(s>=r[i].b && r[i].a<=a+b){
sum++;
s-=r[i].b;
}

}
cout<<sum;
return 0;

}

#include<bits/stdc++.h>
using namespace std;
struct apple{
int a,b;
}r[100005];
bool cmp(apple a,apple b){
return a.b<b.b;
}
int n,a,b,s,sum=0;
int main(){
cin>>n>>s;
cin>>a>>b;
for(int i=0;i<n;i++){
cin>>r[i].a>>r[i].b;
}
sort(r,r+n,cmp);
for(int i=0;i<n;i++){
if(s>=r[i].b && r[i].a<=a+b){
sum++;
s-=r[i].b;
}

}
cout<<sum;
return 0;

}
AC代码