HDU-5543 DP
来源:互联网 发布:淘宝动态评分能改吗 编辑:程序博客网 时间:2024/06/06 09:12
题目
Pick The Sticks
题解
01背包的加强版,由于两端可以放置 length/2 长度的木棍,所以加一维长度为3的状态,分别表示两端不放木棍,只有一端放木棍,两端都放木棍。
代码
#include <algorithm>#include <bitset>#include <cstring>#include <cstdio>#include <cmath>#include <cstdlib>#include <climits>#include <iostream>#include <list>#include <map>#include <queue>#include <set>#include <stack>#include <string>#include <vector>using namespace std;const int MAX= 1005;const int MAXN = 4005;int len[MAX];long long value[MAX];long long dp[MAXN][3];int main(){ int T; cin >> T; for(int t=1;t<=T;++t){ memset(dp,0,sizeof(dp)); int n,l; cin >> n >> l; l *= 2; long long mx = 0; for (int i = 0; i < n; ++i) { scanf("%d %lld",len + i, value + i); len[i] *= 2; mx = max(mx, value[i]); } for (int i = 0; i < n; ++i){ for (int j = l; j >= len[i]/2; --j) { for(int k=0;k<3;++k){ if(j >= len[i]) dp[j][k] = max(dp[j][k], dp[j - len[i]][k] + value[i]); if(k > 0) dp[j][k] = max(dp[j][k], dp[j - len[i] / 2][k-1] + value[i]); mx = max(mx, dp[j][k]); } } } cout << "Case #" << t << ": " << mx << endl; } return 0;}
阅读全文
0 0
- HDU 5543 (DP)
- HDU-5543 DP
- HDU DP
- DP? HDU
- DP? HDU
- DP? HDU
- 【dp】HDU
- 【dp】HDU
- 【dp】 HDU
- DP? HDU
- HDU 5543 Pick The Sticks(DP)
- HDU 5543 Pick The Sticks【三维dp】
- HDU 1003 && HDU 1231 DP
- hdu 1058 DP
- HDU 1069 dp
- HDU 1024(DP)
- hdu 1257 dp+贪心
- HDU 1087(DP)
- 给定固定长度的字符串,求解按字符字典序排列,该字符串是第几小?
- 浅谈python(一)--初识python
- 子弹射击检测
- python 开头两行
- iOS libsqlite3.0.tbd和libsqlite3.tbd的区别
- HDU-5543 DP
- 入门级学习Spring MVC
- ListView中点击ITEM单击事件无效。
- 使用 Nginx 提升网站访问速度
- 丑数
- Day3
- Spring中Bean及@Bean的理解
- Android Execution failed for task':app:clean'
- 面试题(数据库)学习20170919