题目大意:给你n张牌,排成一排放在桌子上,可以从左端拿也可以从右端拿。现在有A,B两人轮流取牌,A先取,两人足够聪明,即都想取最大的牌总和,问A能取到的最大值。

解题思路:定义dp[i][j][k]。k只有0,1,表示在i->j这段区间内分别取左右两端能取到的最大总和。

#include<bits/stdc++.h>
using namespace std;
typedef long long INT;
#define min(a,b) ((a)<(b)?(a):(b))
#define max(a,b) ((a)>(b)?(a):(b))
const int maxn=1e3+20;
int dp[maxn][maxn][2];
int a[maxn];
int main(){
int n;
while(scanf("%d",&n)!=EOF){
int sum=0;
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
sum+=a[i];
}
for(int i=1;i<=n;i++){
dp[i][i][0]=a[i];
dp[i][i][1]=a[i];
}
for(int i=1;i<n;i++){
dp[i][i+1][0]=a[i];
dp[i][i+1][1]=a[i+1];
}
int tm00,tm01,tm11,tm10;
for(int k=2;k<n;k++){
for(int i=1;i+k<=n;i++){
tm00=a[i]+max(dp[i+2][i+k][0],dp[i+2][i+k][1]);
tm01=a[i]+max(dp[i+1][i+k-1][0],dp[i+1][i+k-1][1]);
dp[i][i+k][0]=min(tm00,tm01);//后手肯定会让先手这次只能取到上次取的两个最大值中的最小值
tm11=a[i+k]+max(dp[i][i+k-2][0],dp[i][i+k-2][1]);
tm10=a[i+k]+max(dp[i+1][i+k-1][0],dp[i+1][i+k-1][1]);
dp[i][i+k][1]=min(tm11,tm10);
}
}
int tmp=max(dp[1][n][0],dp[1][n][1]);
printf("%d\n",2*tmp-sum);
}
return 0;
}

  

BNU 26349——Cards——————【区间dp】的更多相关文章

  1. hdu 4597 Play Game 区间dp

    Play Game Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=459 ...

  2. CodeForces 512B(区间dp)

    D - Fox And Jumping Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64 ...

  3. HDU 4597 Play Game(DFS,区间DP)

    Play Game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) Total Sub ...

  4. Poj 1651 Multiplication Puzzle(区间dp)

    Multiplication Puzzle Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10010   Accepted: ...

  5. POJ 1651 Multiplication Puzzle(类似矩阵连乘 区间dp)

    传送门:http://poj.org/problem?id=1651 Multiplication Puzzle Time Limit: 1000MS   Memory Limit: 65536K T ...

  6. 算法复习——区间dp

    感觉对区间dp也不好说些什么直接照搬讲义了2333 例题: 1.引水入城(洛谷1514) 这道题先开始看不出来到底和区间dp有什么卵关系···· 首先肯定是bfs暴力判一判可以覆盖到哪些城市····无 ...

  7. 【BZOJ-4380】Myjnie 区间DP

    4380: [POI2015]Myjnie Time Limit: 40 Sec  Memory Limit: 256 MBSec  Special JudgeSubmit: 162  Solved: ...

  8. 【POJ-1390】Blocks 区间DP

    Blocks Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 5252   Accepted: 2165 Descriptio ...

  9. 区间DP LightOJ 1422 Halloween Costumes

    http://lightoj.com/volume_showproblem.php?problem=1422 做的第一道区间DP的题目,试水. 参考解题报告: http://www.cnblogs.c ...

随机推荐

  1. 小 M 的算式(dfs)

    [问题描述]小 M 在做数学作业的时候遇到了一个有趣的问题:有一个长度为 n 的数字串 S,小 M 需要在数字之间填入若干个“+”和恰好一个“=”,使其成为一个合法的等式.如对于 S=“2349”,可 ...

  2. java泛型与object的比较

    在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下 ...

  3. WC2019 冬眠记

    Day1 做高铁来广州 晚上开幕式,亮点在CCF的日常讲话.dzd有事换wh讲. 我们WC比赛的人数是最多的,性价比是最高的 然后掌声雷动 相信大家鼓掌是同意我的话 再次掌声雷动(雾 Day2-Day ...

  4. django 学习之DRF (一)

    Django框架基础DRF-01 前后端分离介绍 1.前后端不分离图解 2.前后端分离图解     3.为什么要学习DRF    DRF可以帮助我们开发者快速的开发⼀个依托于Django的前后后端分离 ...

  5. Apache 性能调优-参考篇

    1 内存     适当选用适合大小的内存,保证谷峰负载时,有足够的内存使用 2 使用ab测试apache性能 ab -n 1000 -c 10 http://www.test.com 使用ab的缺点: ...

  6. Mysql 别名

    一.列别名 1.要给列添加别名,可以使用AS关键词后跟别名,例:SELECT [column_1 | expression] AS descriptive_name FROM table_name; ...

  7. P4014 分配问题

    \(\color{#0066ff}{题目描述}\) 有 \(n\) 件工作要分配给 \(n\) 个人做.第 \(i\) 个人做第 \(j\) 件工作产生的效益为 \(c_{ij}\) .试设计一个将 ...

  8. luogu2522 [HAOI2011]Problem b

    luogu2522[HAOI2011]Problem b 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公 ...

  9. SURF特征识别

    如果对Surf的探究或者使用到此为止,我觉得只是用Surf这把牛刀吓唬了一个小鸡仔,万里长征才刚刚开始第一步,最少有三个问题需要得到解答: 1. 保存特征点信息的keyPoints向量内每个元素包含有 ...

  10. 本地私有库的实现 pod

    以pods的形式,引入本地相关文件 补充: pod repo 查看本地 pod 目录信息 一, 生成本地库 的描述文件.spec //1.进入的 本地库的 目录 cd  'xxx' //2.初始化本地 ...