[POJ2392]Space Elevator

来源:互联网 发布:xcc mixer软件 编辑:程序博客网 时间:2024/06/01 10:44

经典题

假如本题不按照高度排序 肯定会错 因为假如先放大的再放小的可能就放不进去了

不用你们说我也知道这个题有优化 但是直接暴力枚举完全够做的了

/*One Night Of The Hunters*/#include<cstdio>#include<cstdlib>#include<iostream>#include<cstring>#include<algorithm>#include<queue>#include<iomanip>#include<stack>#include<map>#include<set>#include<cmath>#define debug(x) cerr<<#x<<"="<<x<<endl#define INF 0x7f7f7f7fusing namespace std;typedef pair<int,int> pii;int n;struct node{int h,a,c;}block[404];bool cmp(node x,node y){return x.a<y.a;}int f[4000001];int main(){scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d %d %d",&block[i].h,&block[i].a,&block[i].c);}int ans=0;sort(block+1,block+1+n,cmp);for(int i=1;i<=n;i++){for(int j=block[i].a;j>=block[i].h;j--){for(int k=0;k<=block[i].c;k++){if(j-k*block[i].h<0)break;f[j]=max(f[j],f[j-k*block[i].h]+k*block[i].h);ans=max(ans,f[j]);}}}printf("%d\n",ans);return 0;}/*srO xudyh davidlee1999WTK linkct1999 Orzcompiler TDM-GCC 5.9.2*/
二进制拆分
/*One Night Of The Hunters*/#include<cstdio>#include<cstdlib>#include<iostream>#include<cstring>#include<algorithm>#include<queue>#include<iomanip>#include<stack>#include<map>#include<set>#include<cmath>#define debug(x) cerr<<#x<<"="<<x<<endl#define INF 0x7f7f7f7fusing namespace std;typedef pair<int,int> pii;int n;struct node{int h,a,c;}block[404],stone[4444];bool cmp(node x,node y){return x.a<y.a;}int f[4000001];int main(){int cnt=0,k=1;scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d %d %d",&block[i].h,&block[i].a,&block[i].c);k=1;while(block[i].c-k>=0){stone[++cnt]=block[i];block[i].c-=k;stone[cnt].c=k;k*=2;}stone[++cnt]=block[i];}int ans=0;sort(stone+1,stone+1+cnt,cmp);for(int i=1;i<=cnt;i++){for(int j=stone[i].a;j>=stone[i].h*stone[i].c;j--){f[j]=max(f[j],f[j-(stone[i].h*stone[i].c)]+stone[i].h*stone[i].c);ans=max(ans,f[j]);}}printf("%d\n",ans);return 0;}/*srO xudyh davidlee1999WTK linkct1999 Orzcompiler TDM-GCC 5.9.2*/


0 0
原创粉丝点击