北落南殇 @ 2019-12-29 11:43:58
### #include<cstdio>
### using namespace std;
## int main(){
int n,s;
int a,b;
int x[101],y[101];
scanf("%d%d",&n,&s);
scanf("%d%d",&a,&b);
for(int i=1;i<=n;i++)scanf("%d%d",&x[i],&y[i]);
int c=a+b,ans=0;
int temp,k;
for(int i=2;i<=n;i++){
temp=y[i];
k=1;
while(y[k]<=temp&&k<i)k++;
for(int j=i-1;j>=k;j--)y[j-1]=y[j];
y[k]=temp;
}
for(int i=1;i<=n;i++){
if(c>=x[i]&&s>=y[i]){
ans++;
s-=y[i];
}
}
printf("%d",ans);
return 0;
## }
by 浪花似月 @ 2019-12-29 12:16:54
#include<bits/stdc++.h>
using namespace std;
const int maxN=5000+10;
struct Node{
int a,b;
}apple[maxN];
int n,m,x,y,t=0,ans=0,lost[maxN];
int cmp(int a,int b){
return a<b;
}
int main(){
cin>>n>>m>>x>>y;
for(int i=0;i<n;i++){
cin>>apple[i].a>>apple[i].b;
if(x+y>=apple[i].a){
lost[t]=apple[i].b;
t++;
}
}
if(n==0||m==0){
cout<<0;
return 0;
}
sort(lost,lost+t,cmp);
for(int i=0;i<t;i++){
m-=lost[i];
if(m<0){cout<<ans;return 0;}
ans++;
}
return 0;
}
by 浪花似月 @ 2019-12-29 12:18:07
先找可以采摘的,再排序,当m<0是就输出
by Thomas_ @ 2019-12-29 12:34:56
有点复杂了
by Thomas_ @ 2019-12-29 12:35:37
#include<bits/stdc++.h>
using namespace std;
const int maxn=10001;
int n,s,a,b,apple_weight[maxn],apple[maxn];
int main()
{
int cnt=0,sum=0;
cin>>n>>s>>a>>b;
for(int i=1;i<=n;i++)
{
int c,d;
cin>>c>>d;
if(a+b>=c)
{
apple_weight[++cnt]=d;
apple[cnt]=c;
}
}
for(int i=1;i<=cnt;i++)
for(int j=1;j<=cnt;j++)
{
if(apple_weight[i]<apple_weight[j])
{
swap(apple_weight[i],apple_weight[j]);
swap(apple[i],apple[j]);
}
}
for(int i=1;i<=cnt;i++)
{
if(s-apple_weight[i]>=0)
{
sum++;
s-=apple_weight[i];
}
}
cout<<sum;
//for(int i=1;i<=cnt;i++) cout<<apple[i]<<' '<<apple_weight[i]<<endl;
return 0;
}
这样会比较简单
by Thomas_ @ 2019-12-29 12:35:45
@北落南殇
by 北落南殇 @ 2019-12-29 14:03:45
@Thomas_ @浪花似月 那我具体的问题出在哪里呢?(你们的代码我已经看懂了)
by Thomas_ @ 2019-12-29 14:14:49
@北落南殇 你的c=a+b是什么意思
by 北落南殇 @ 2019-12-29 14:19:48
@Thomas_ 就是陶陶加板凳的高度
by Thomas_ @ 2019-12-29 14:20:49
@北落南殇 你排个序看看行不行
by Thomas_ @ 2019-12-29 14:21:07
@北落南殇 加载c后面