HDU 6199 gems gems gems dp(逆推)
来源:互联网 发布:javascript编程全解 编辑:程序博客网 时间:2024/05/21 18:38
传送门:HDU 6199
题意: 两个人轮流拿物品,每一个物品都有一个价值,第 i 次拿 k 个那么 第 i + 1 次 可以拿 k 或者 k + 1 个。Alice想让价值差最大,Bob想让价值差最小,Alice先手,问最后差是多少。
思路:来自大牛:点击打开链接Orz
取膜用&(2的幂次)优化也是个小技巧,要记住。
比赛时还以为是博弈。。dalao们都好熟练啊。。
代码:
#include<bits/stdc++.h>#define ll long long#define inf 0x3f3f3f3fusing namespace std;typedef pair<int,int> P;const int MAXN = 20010;const int mod = 255;int sum[MAXN];int dp[2][256][210];int main(){ int T, n, t; cin >> T; while(T--) { scanf("%d", &n); for(int i = 1; i <= n; i++) { scanf("%d", &t); sum[i] = sum[i - 1] + t; } memset(dp, 0, sizeof(dp)); int up = ceil(sqrt(n * 2.0)) + 1; for(int i = n; i > 0; i--) { for(int j = 1; j <= up && i + j - 1 <= n; j++) { dp[0][i & mod][j] = dp[1][(i + j) & mod][j] + sum[i + j - 1] - sum[i - 1]; dp[1][i & mod][j] = dp[0][(i + j) & mod][j] - (sum[i + j - 1] - sum[i - 1]); if(i + j <= n) { dp[0][i & mod][j] = max(dp[0][i & mod][j], dp[1][(i + j + 1) & mod][j + 1] + sum[i + j] - sum[i - 1]); dp[1][i & mod][j] = min(dp[1][i & mod][j], dp[0][(i + j + 1) & mod][j + 1] - (sum[i + j] - sum[i - 1])); } } } cout << dp[0][1][1] << endl; } return 0;}
阅读全文
0 0
- HDU 6199 gems gems gems dp(逆推)
- hdu 6199 gems gems gems(DP)
- HDU 6199 gems gems gems dp
- hdu 6199 gems gems gems dp
- HDU 6199 gems gems gems
- hdu 6199 gems gems gems
- HDU 6199 gems gems gems [DP+DP优化]
- HDU 6199 gems gems gems (DP, 2017 ACM/ICPC Asia Regional Shenyang Online)
- HDU 6199 gems gems gems 2017沈阳网络赛 1006
- HDU 6199 gems gems gems (2017沈阳网络赛)
- 2017沈阳网络赛 HDU 6199 gems gems gems
- HDU 6199 gems gems gems (2017沈阳网赛
- HDU 4778 Gems Fight!(dp)
- 【树形DP】 珠宝(GEMS)
- hdu 4778 Gems Fight!(壮压&记忆化DP)
- HDU 4778 Gems Fight! (博弈+状压DP)
- hdu-4778-Gems Fight!---状态压缩dp
- hdu 4778 Gems Fight!(状态压缩dp)
- mybatis之<trim prefix="" suffix="" suffixOverrides="" prefixOverrides=""></trim>
- 欢迎使用CSDN-markdown编辑器
- [易语言] 滴答表格挂接事件 : 事件编号
- 真正的软件测试实习3--Android常见的几种crash
- 梯度下降原理及Python实现
- HDU 6199 gems gems gems dp(逆推)
- JVM&GC Full Coverage
- python日期相关运算和测试
- 第2周项目2 程序的多文件管理
- Java 并发 —— 读写锁(ReadWriteLock)
- Android开发艺术探索_JNI和NDK编程(十四)
- 网络相关
- 趣味数学问题的算法实现
- 最新C#基础知识,面试题汇总