UESTC 1218 Pick The Sticks (2015 CCPC)
2016-07-31 14:30
169 查看
题目链接
题意就是给你一块长为l的木板,然后有n个木棍,木棍有长度,有价值,可以放在木板上,只要它超出木棍的的长度不超过他自己长度的二分之一,它就可以放上去。
看大家对背包问题的的理解,很明显加一维状态,表示放在边缘没。
下面是代码
细节就是背包边缘的处理
总之这题算是2015年CCPC的铜牌题。
加油!!!!!!
题意就是给你一块长为l的木板,然后有n个木棍,木棍有长度,有价值,可以放在木板上,只要它超出木棍的的长度不超过他自己长度的二分之一,它就可以放上去。
看大家对背包问题的的理解,很明显加一维状态,表示放在边缘没。
下面是代码
细节就是背包边缘的处理
#include <cstring> #include <cmath> #include <algorithm> #include <cstdio> #include <iostream> #include <map> #define LL long long using namespace std; LL dp[2][8010][3]; LL w[4005],v[4005]; int main() { int t,kase = 1; scanf("%d",&t); while(t--){ memset(dp,0,sizeof(dp)); int l,n; scanf("%d%d",&n,&l); l *= 2; for(int i=0;i<n;i++){ scanf("%lld%lld",&w[i],&v[i]); w[i] *= 2; } int now = 1 , pre = 0; for(int i=0;i<n;i++){ for(int j=0;j<=l;j++){ dp[now][j][0] = dp[pre][j][0]; dp[now][j][1] = dp[pre][j][1]; dp[now][j][2] = dp[pre][j][2]; } for(int j=l;j>=w[i];j--){ dp[now][j][0] = max(dp[pre][j-w[i]][0] + v[i],dp[now][j][0]); dp[now][j][1] = max(dp[pre][j-w[i]][1] + v[i],dp[now][j][1]); dp[now][j][2] = max(dp[pre][j-w[i]][2] + v[i],dp[now][j][2]); } for(int j=l;j>=w[i]/2;j--){ dp[now][j][1] = max(dp[now][j][1],dp[pre][j-(w[i]/2)][0] + v[i]); // 这里很关键 dp[now][j][2] = max(dp[now][j][2],dp[pre][j-(w[i]/2)][1] + v[i]); // 这里很关键 } swap(now,pre); } LL ans = dp[pre][l][0]; ans = max(ans,dp[pre][l][1]); ans = max(ans,dp[pre][l][2]); for(int i=0;i<n;i++) ans = max(ans,v[i]); printf("Case #%d: ",kase++); printf("%lld\n",ans); } return 0; }
总之这题算是2015年CCPC的铜牌题。
加油!!!!!!
相关文章推荐
- 2015 CCPC D- Pick The Sticks(UESTC 1218) (01背包变形)
- ACM学习历程—UESTC 1218 Pick The Sticks(动态规划)(2015CCPC D)
- DP(01背包) UESTC 1218 Pick The Sticks (15CCPC C)
- 【HDU5543 2015 CCPC 南阳国赛D】【贪心+DP】Pick The Sticks 木棍重心放在容器内 贪心法+三维状态直接法
- 2015南阳CCPC D - Pick The Sticks dp
- HDU5543 Pick The Sticks(01背包变种,dp)(2015CCPC)
- 2015南阳CCPC D - Pick The Sticks 背包DP.
- UESTC 1218 Pick The Sticks
- UESTC 1218 Pick The Sticks (dp )
- UESTC 1218 Pick The Sticks
- 2015 CCPC-C-The Battle of Chibi (UESTC 1217)(动态规划+树状数组)
- 2015 南阳CCPC hdu5543 Pick The Sticks(01背包)
- uestc oj 1218 Pick The Sticks (01背包变形)
- CDOJ 1218 Pick The Sticks
- The 2015 China Collegiate Programming Contest D Pick The Sticks
- ccpc Pick The Sticks(dp特殊处理)
- The 2015 China Collegiate Programming Contest D.Pick The Sticks hdu 5543
- Pick The Sticks UESTC - 1218 0-1背包变形
- UESTC Pick The Sticks (背包变形)
- ACM学习历程—UESTC 1217 The Battle of Chibi(递推 && 树状数组)(2015CCPC C)