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)复杂度, ...
随机推荐
- 【刷题】BZOJ 4195 [Noi2015]程序自动分析
Description 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3,-代表程序中出现的变量,给定n个形如xi=xj或x ...
- [学习笔记]插头dp
基于连通性的状压dp 巧妙之处:插头已经可以表示内部所有状态了. 就是讨论麻烦一些. 简介 转移方法:逐格转移,分类讨论 记录状态方法:最小表示法(每次要重新编号,对于一类没用“回路路径”之类的题,可 ...
- Linux上常用的基本命令
复制:copy [keysystem@localhost happydzy]$ cp file1 file2 [keysystem@localhost happydzy]$ ll total -rw- ...
- PowerDesigner 打印错误
PowerDesigner打开pdm文件时报“打印错误”(解决) 原创作品,出自 “深蓝的blog” 博客,欢迎转载,转载时请务必注明出处,否则追究版权法律责任. 深蓝的blog:http://b ...
- linux查看硬盘详细信息
最近公司新进了一批设备,为了弄清楚厂家有没有忽悠我们,分配给我一个任务 查看磁盘是不是二手的,window上有鲁大师啥的那么linux有什么软件吗? 答案是有的! 叫做smart 具体请查看: htt ...
- 网络技术之TCP三次握手
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手方式建立一个连接 第一次握手:c->s 建立连接时,客户端发送SYN包(syn=j){注:syn:Synchronize Sequ ...
- bzoj千题计划187:bzoj1770: [Usaco2009 Nov]lights 燈 (高斯消元解异或方程组+枚举自由元)
http://www.lydsy.com/JudgeOnline/problem.php?id=1770 a[i][j] 表示i对j有影响 高斯消元解异或方程组 然后dfs枚举自由元确定最优解 #in ...
- Struts2_day01
一.内容大纲 1 struts2概述 (1)应用在web层 2 struts2入门案例 3 struts2底层执行过程 4 struts2相关配置 (1)struts.xml配置 - package. ...
- iOS常用小功能
CHENYILONG Blog 常用小功能 技术博客http://www.cnblogs.com/ChenYilong/ 新浪微博http://weibo.com/luohanchenyilong ...
- Linux - awk 文本处理工具三
AWK 文件打印匹配 格式示例 awk '/Tom/' file # 打印匹配到得行 awk '/^Tom/{print $1}' # 匹配Tom开头的行 打印第一个字段 awk '$1 !~ /ly ...