大神快来看,为什么60分?怎么想都想不通!

P1478 陶陶摘苹果(升级版)

```cpp #include<iostream> using namespace std; int x[5001],y[5001],a,b,n,s,t=0; bool used[5001];//标记该苹果是否被摘 int main() { cin>>n>>s; cin>>a>>b; a=a+b; for(int i=1;i<=n;i++) { cin>>x[i]; cin>>y[i]; used[i]=0; } for(int i=1;i<=n;i++) if(x[i]>a) used[i]=1;//若摘不到,视为已摘 int i=0; while(s>=0) { int j=10000,k=1; i=1; while(used[i]&&i<=n) i++; //若苹果被摘,下一个 while(i<=n) { if(j>y[i]&&!used[i]) { j=y[i];//j标记所用最小的力气 k=i;//k标记要摘的苹果 } i++; } used[k]=1;//苹果已摘 s-=j;//力气减少 t++;//个数加一 } cout<<t-1;//s小于零个数才加一,减去最后一个实际摘不到的 return 0; } 认为是这样哈,希望对你有帮助,么么哒~ ```
by xtx2004 @ 2017-09-01 21:48:30


80分求改程序
by MscWood @ 2017-09-05 21:10:15


```cpp #include<iostream> #include<cstdio> #include<algorithm> struct apple {int h,t;}; apple a[5100],b[5100]; //结构体h表示高度,t表示消耗体力 int camp(apple x,apple y) { if(x.t <y.t )return 1; else return 0; } //自定义排序函数 using namespace std; int main() { int ans=0,n,s,sh,bd,j,num; j=0; cin>>n>>s; cin>>bd>>sh; for(int i=1;i<=n;i++) cin>>a[i].h >>a[i].t ; //读入 for(int i=1;i<=n;i++) { if(a[i].h<=sh+bd) { j++; b[j].h=a[i].h; b[j].t=a[i].t; } } //把所有能摘到的筛选出来 num=j; sort(b+1,b+num+1,camp); //按体力消耗有小到大排序 j=1; while(1) { s-=b[j].t; //如果摘了某个体力为负,就跳出(因为体力按小到大排序了,后面更大) if(s<0) break; else {ans++; j++;} //不然个数加一 } cout<<ans; //输出答案 return 0; } ```
by MscWood @ 2017-09-05 21:10:35


这题坑,要先判断一下s是否为0。 以下满分程序
by MscWood @ 2017-09-05 21:13:44


```cpp #include<iostream> #include<cstdio> #include<algorithm> struct apple {int h,t;}; apple a[5100],b[5100]; //结构体h表示高度,t表示消耗体力 int camp(apple x,apple y) { if(x.t <y.t )return 1; else return 0; } //自定义排序函数 using namespace std; int main() { int ans=0,n,s,sh,bd,j,num; j=0; cin>>n>>s; cin>>bd>>sh; for(int i=1;i<=n;i++) cin>>a[i].h >>a[i].t ; //读入 if(s<=0) {cout<<0; return 0;} for(int i=1;i<=n;i++) { if(a[i].h<=sh+bd) { j++; b[j].h=a[i].h; b[j].t=a[i].t; } } //把所有能摘到的筛选出来 num=j; sort(b+1,b+num+1,camp); //按体力消耗有小到大排序 j=1; while(1) { s-=b[j].t; //如果摘了某个体力为负,就跳出(因为体力按小到大排序了,后面更大) if(s<0) break; else {ans++; j++;} //不然个数加一 } cout<<ans; //输出答案 return 0; } ```
by MscWood @ 2017-09-05 21:13:55


|