HDU 4597 Play Game
2015-08-05 14:43
477 查看
Alice and Bob are playing a game. There are two piles of cards. There are N cards in each pile, and each card has a score. They take turns to pick up the top or bottom card from either pile, and the score of the card will be added
to his total score. Alice and Bob are both clever enough, and will pick up cards to get as many scores as possible. Do you know how many scores can Alice get if he picks up first?
Input
The first line contains an integer T (T≤100), indicating the number of cases.
Each case contains 3 lines. The first line is the N (N≤20). The second line contains N integer ai (1≤a
i≤10000). The third line contains N integer b i (1≤bi≤10000).
Output
For each case, output an integer, indicating the most score Alice can get.
Sample Input
Sample Output
to his total score. Alice and Bob are both clever enough, and will pick up cards to get as many scores as possible. Do you know how many scores can Alice get if he picks up first?
Input
The first line contains an integer T (T≤100), indicating the number of cases.
Each case contains 3 lines. The first line is the N (N≤20). The second line contains N integer ai (1≤a
i≤10000). The third line contains N integer b i (1≤bi≤10000).
Output
For each case, output an integer, indicating the most score Alice can get.
Sample Input
2 1 23 53 3 10 100 20 2 4 3
Sample Output
53 105#include <stdio.h> #include <string.h> #include <algorithm> using namespace std; #define MAXN 22 int dp[MAXN][MAXN][MAXN][MAXN],aa[MAXN],bb[MAXN]; int dfs(int a,int b,int c,int d,int sum) { if(dp[a][b][c][d]) return dp[a][b][c][d]; int temp=0; if(a<=b) { temp=max(temp,sum-dfs(a+1,b,c,d,sum-aa[a])); temp=max(temp,sum-dfs(a,b-1,c,d,sum-aa[b])); } if(c<=d) { temp=max(temp,sum-dfs(a,b,c+1,d,sum-bb[c])); temp=max(temp,sum-dfs(a,b,c,d-1,sum-bb[d])); } dp[a][b][c][d]=temp; return dp[a][b][c][d]; } int main() { int t,n,i,sum; scanf("%d",&t); while(t--) { sum=0; scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d",&aa[i]); sum+=aa[i]; } for(i=1;i<=n;i++) { scanf("%d",&bb[i]); sum+=bb[i]; } memset(dp,0,sizeof dp); printf("%d\n",dfs(1,n,1,n,sum)); } return 0; }
相关文章推荐
- 解决jquery操作checkbox全选全不选无法勾选问题
- 剑指offer面试题15——扩展2:判断一个单向链表是否形成环结构
- Mac OS 上安装Ruby环境
- 单片机矩阵按键长短按
- Marquee Effect
- 南邮 OJ 1356 方格取数问题
- Android 自定义ViewGroup 实现流式布局
- ExtJs 中 Ajax 连接超时设置与问题排查
- POJ 2247 Humble Numbers
- 南邮 OJ 1342 皇后控制问题
- hdu1018 Big Number stirling公式
- powerDesigner自制的最简单的数据库表结构报告文档&表字段布局说明
- HDU 4497 GCD and LCM
- Intel Threading BuildingBlocks(Intel TBB)介绍
- iSight集成Adams/View:Adams组件
- VIM 操作快捷键
- 解决jquery操作checkbox全选全不选无法勾选问题
- 前端各种技术简介
- JS使用parseInt解析数字实现求和的方法
- io.js v3.0.0发布