Codeforces Round #380 Div.2 F - Financiers Game
这种两人博弈一般都可以用两个dp写, 一个dp描述第一个人的最优态, 第二个dp描述第二个人的最优态,难点在于优化空间。。。
我感觉这个空间开得有点玄学。。
dp[ op ][ l ] [ d ] [ k ] 表示到第op个人先手,在第任意轮的时候第一个人和第二个人取的个数只差不会超过180,所以用他们的差值开一维状态。
d = (l - 1) - (n - r), 只有区间 (l , n + d - l - 1)的情况下的最优值。
#include<bits/stdc++.h>
#define LL long long
#define mk make_pair
using namespace std; const int N = 2e3 + ;
const int inf = 0x3f3f3f3f;
int B = , n;
int dp[][N][][], a[N]; int dfs(int l, int r, int k, int op) {
int d = (l - ) - (n - r);
int &ans = dp[op][l][B + d][k];
if(ans != -) return ans;
int ret;
if(op == ) {
if(l + k - == r) return dp[op][l][B + d][k] = a[r] - a[l - ];
else if(l + k - > r) return dp[op][l][B + d][k] = ; int ret1 = dfs(l + k, r, k, op ^ ) + a[l + k -] - a[l - ];
int ret2 = dfs(l + k + , r, k + , op ^ ) + a[l + k] - a[l - ];
ret = max(ret1, ret2);
} else {
if(l + k - == r) return dp[op][l][B + d][k] = -a[r] + a[l - ];
else if(l + k - > r) return dp[op][l][B + d][k] = ; int ret1 = dfs(l, r - k, k, op ^ ) - a[r] + a[r - k];
int ret2 = dfs(l, r - k - , k + , op ^ ) - a[r] + a[r - k - ];
ret = min(ret1, ret2);
}
return dp[op][l][d + B][k] = ret;
}
int main() {
memset(dp, -, sizeof(dp));
scanf("%d", &n);
for(int i = ; i <= n; i++)
scanf("%d", &a[i]), a[i] += a[i - ];
int ans = dfs(, n, , );
printf("%d\n", ans);
return ;
}
/*
*/
Codeforces Round #380 Div.2 F - Financiers Game的更多相关文章
- Codeforces Round #485 (Div. 2) F. AND Graph
Codeforces Round #485 (Div. 2) F. AND Graph 题目连接: http://codeforces.com/contest/987/problem/F Descri ...
- Codeforces Round #486 (Div. 3) F. Rain and Umbrellas
Codeforces Round #486 (Div. 3) F. Rain and Umbrellas 题目连接: http://codeforces.com/group/T0ITBvoeEx/co ...
- Codeforces Round #501 (Div. 3) F. Bracket Substring
题目链接 Codeforces Round #501 (Div. 3) F. Bracket Substring 题解 官方题解 http://codeforces.com/blog/entry/60 ...
- Codeforces Round #499 (Div. 1) F. Tree
Codeforces Round #499 (Div. 1) F. Tree 题目链接 \(\rm CodeForces\):https://codeforces.com/contest/1010/p ...
- Codeforces Round #376 (Div. 2)F. Video Cards(前缀和)
题目链接:http://codeforces.com/contest/731/problem/F 题意:有n个数,从里面选出来一个作为第一个,然后剩下的数要满足是这个数的倍数,如果不是,只能减小为他的 ...
- Codeforces Round #271 (Div. 2) F. Ant colony (RMQ or 线段树)
题目链接:http://codeforces.com/contest/474/problem/F 题意简而言之就是问你区间l到r之间有多少个数能整除区间内除了这个数的其他的数,然后区间长度减去数的个数 ...
- Codeforces Round #325 (Div. 2) F. Lizard Era: Beginning meet in the mid
F. Lizard Era: Beginning Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/5 ...
- Codeforces Round #271 (Div. 2) F题 Ant colony(线段树)
题目地址:http://codeforces.com/contest/474/problem/F 由题意可知,最后能够留下来的一定是区间最小gcd. 那就转化成了该区间内与区间最小gcd数相等的个数. ...
- Codeforces Round #479 (Div. 3) F. Consecutive Subsequence (简单dp)
题目:https://codeforces.com/problemset/problem/977/F 题意:一个序列,求最长单调递增子序列,但是有一个要求是中间差值都是1 思路:dp,O(n)复杂度, ...
随机推荐
- 洛谷 P1654 OSU! 解题报告
P1654 OSU! 题目描述 osu 是一款群众喜闻乐见的休闲软件. 我们可以把osu的规则简化与改编成以下的样子: 一共有\(n\)次操作,每次操作只有成功与失败之分,成功对应\(1\),失败对应 ...
- Problem C Dist 解题报告
Problem C Dist Description 有一个\(n\)个点带边权的连通无向图,边集用\(k\)个集合\(s_1,s_2,\dots,s_k\)和\(k\)个整数\(w_1,w_2,\d ...
- MySQL的备份和恢复-基于LVM快照的备份(lvm-snapshot)
MySQL的备份和恢复-基于LVM快照的备份(lvm-snapshot) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是快照卷 如上图所示,原卷和快照卷可以不一样大,因为 ...
- Python基础【day01】:PyChram使用技巧总结(六)
本节内容 1.添加或者修改文件模板 2. python版本管理切换 3.已有文件重命名4.Python模块安装5.在PyChram中直接浏览文件目录6. 断点调试7.常用快捷键8.PyChram设置字 ...
- .net 未被引用的错误
开发的时候遇到了一个错误,如下: 错误 1 类型“System.ServiceModel.ClientBase`1<T0>”在未被引用的程序集中定义. 我原本以为是版本号的问题,添加了引用 ...
- UVA 12307 Smallest Enclosing Rectangle
https://vjudge.net/problem/UVA-12307 求覆盖所有点的最小矩形面积.周长 相当于求凸包的最小面积外接矩形.最小周长外接矩形 结论: 这个矩形一定有一条边和凸包上一条边 ...
- 2018年10月14日ICPC南京站参赛总结
这次比赛消耗掉了我们全部的信心和精力 在热身赛上,总体来说还是比较愉快的,这个时候心态就不对 正赛的时候我们遇到了A题签到题 我一开始是读错了题意了,认为这个题是一个裸的SG函数,而且那么多人秒过 W ...
- Python字符串颜色输出
\033[1;31;40m # 1是显示方式(可选),31是字体颜色,40m 是字体背景颜色: \033[0m # 恢复终端默认颜色,即取消颜色设置: # cat col ...
- snmp 简单的网络管理协议
snmp snmptranslate . # 查看映射关系 DISMAN-EVENT-MIB::sysUpTimeInstance snmpdf -v -c public localhost # SN ...
- header()跳转
if ($toNews == 1) { header('Location:/ucenter/pageMailBox/2'); exit; } PHP跳转页面,用 header() 函数 定义和用法 h ...