题目大意:

两人轮流从两堆牌从抽取最顶端或者最底部的牌,得到的分数加到自己身上,问先拿牌的最多能得多少分

记忆化搜索,2堆牌的底和顶,有四种方法,根据四种方法来找到最优解

 #include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int dp[][][][],p[],q[];
int dfs(int a,int b,int c,int d,int sum)
{
int maxn=;
if(a>b&&c>d) return ;
if(dp[a][b][c][d]) return dp[a][b][c][d];
if(a<=b){
maxn=max(maxn,sum-dfs(a+,b,c,d,sum-p[a]));
maxn=max(maxn,sum-dfs(a,b-,c,d,sum-p[b]));
}
if(c<=d){
maxn=max(maxn,sum-dfs(a,b,c+,d,sum-q[c]));
maxn=max(maxn,sum-dfs(a,b,c,d-,sum-q[d]));
}
dp[a][b][c][d]=maxn;
return maxn;
}
int main()
{
int T,n,sum;
scanf("%d",&T);
while(T--){
sum=;
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%d",&p[i]);
sum+=p[i];
}
for(int i=;i<=n;i++){
scanf("%d",&q[i]);
sum+=q[i];
}
memset(dp,,sizeof(dp));
int ans=dfs(,n,,n,sum);
printf("%d\n",ans);
}
return ;
}

最新文章

  1. C语言关键字详解
  2. Nginx 缓存参数
  3. Oracle数据库中实现mysql数据库中auto-increment功能
  4. VB调用控制面板
  5. CUICatalog: Invalid asset name supplied: (null)
  6. S3C2440硬件连接解析
  7. Java面试13|算法
  8. C语言之for循环
  9. Eclipse集成Android_NDK
  10. day25 Python __setattr__
  11. 牛客第三场多校 H Diff-prime Pairs
  12. MongoDB-管道与聚合(3)
  13. js jquery 函数回调
  14. macOS 安装 pcl 1.8.0
  15. $.cookie is not a function;原因及解决办法
  16. $.ajax 的速度要快于 angular 里 $http (个别情况)
  17. MyBatis 学习记录3 MapperMethod类
  18. 代码质量检测-Sonar
  19. UEditor 中配置可以跨域访问的图片路径
  20. C Program基础-宏定义

热门文章

  1. Backbone学习记录(7)
  2. FACVSPOW - Factorial vs Power 数学方法 + 二分
  3. CentOS6.5下中文输入法的相关问题
  4. ZGC,一个超乎想象的垃圾收集器
  5. docker 框架概述
  6. C-基础:函数返回局部变量
  7. ionic小白的学习路之安装运行篇
  8. Spring框架针对dao层的jdbcTemplate操作crud之add添加数据库操作
  9. 896. Monotonic Array@python
  10. Java多线程的同步方式和锁机制