传送门

题目大意:从一个序列两端取数,先后手两人

均采用最优策略,问先后手的得分。

题解:

区间dp

如果先手面临的状态是a1,a2,a3,a4,a5.

如果取走一个那么后手面临的状态是a2,a3,a4,a5、

同样也是一个最优值。

f[l][r]表示选手A面临[l,r]状态的最优值,那么选手B的最优值

就是区间[l,r]的区间和-f[l][r].

记忆化搜索用结构体返回两个玩家的得分

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#define N 220
using namespace std;int n;int a[N],sum[N],f[N][N];int main(){scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d",&a[i]),sum[i]=sum[i-1]+a[i],f[i][i]=a[i];for(int len=2;len<=n;len++){for(int l=1;l+len-1<=n;l++){int r=l+len-1;f[l][r]=max(sum[r]-sum[l-1]-f[l+1][r],sum[r]-sum[l-1]-f[l][r-1]);}}printf("%d %d",f[1][n],sum[n]-f[1][n]);return 0;
}

dp

#include<iostream>
#include<cstdio>
#include<cstring>
#define N  220
using namespace std;int n;int a[N],sum[N],dp[N][N];struct Score{int p0,p1;
};Score dfs(int l,int r,int p){if(l==r){if(p)return (Score){0,a[l]};return (Score){a[l],0};}if(dp[l][r]){if(p) return (Score){sum[r]-sum[l-1]-dp[l][r],dp[l][r]};return (Score){dp[l][r],sum[r]-sum[l-1]-dp[l][r]};}if(p){dp[l][r]=max(dfs(l+1,r,0).p1+a[l],dfs(l,r-1,0).p1+a[r]);return (Score){sum[r]-sum[l-1]-dp[l][r],dp[l][r]};}else{dp[l][r]=max(dfs(l+1,r,1).p0+a[l],dfs(l,r-1,1).p0+a[r]);return (Score){dp[l][r],sum[r]-sum[l-1]-dp[l][r]};}
}int main(){scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d",&a[i]),sum[i]=sum[i-1]+a[i];Score ans=dfs(1,n,0);printf("%d %d\n",ans.p0,ans.p1);return 0;
}

记忆化搜索

转载于:https://www.cnblogs.com/zzyh/p/7791459.html

洛谷P2734 游戏 A Game相关推荐

  1. 题解——洛谷P2734 游戏A Game 题解(区间DP)

    题面 题目背景 有如下一个双人游戏:N(2 <= N <= 100)个正整数的序列放在一个游戏平台上,游戏由玩家1开始,两人轮流从序列的任意一端取一个数,取数后该数字被去掉并累加到本玩家的 ...

  2. 洛谷小游戏大全(用洛谷的人都得知道)

    洛谷小游戏大全网址: www.luogu.com.cn/paste/1agz1vs7 其实就是洛谷首页网址加 paste/1agz1vs7 云剪贴板 - 洛谷https://www.luogu.com ...

  3. 洛谷1846 游戏 dp

    题目链接 题意: 给定两个正整数数列,你要用它们来做一个游戏:你需要对数列进行若干次操作,每一次操作,应选择两个正整数K1和K2 ,并删除第一个数列的最后K1个数,计算出它们的和S1:删除第二个数列的 ...

  4. 动态规划——洛谷_P1057传球游戏

    题目: 题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏.游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球, ...

  5. 洛谷 2953 [USACO09OPEN]牛的数字游戏Cow Digit Game

    洛谷 2953  [USACO09OPEN]牛的数字游戏Cow Digit Game 题目描述 Bessie is playing a number game against Farmer John, ...

  6. 洛谷P4301 [CQOI2013]新Nim游戏

    洛谷P4301 [CQOI2013]新Nim游戏 题目描述 传统的Nim游戏是这样的:有一些火柴堆,每堆都有若干根火柴(不同堆的火柴数量可以不同).两个游戏者轮流操作,每次可以选一个火柴堆拿走若干根火 ...

  7. 洛谷 P2197 nim游戏

    洛谷 P2197 nim游戏 题目描述 甲,乙两个人玩Nim取石子游戏. nim游戏的规则是这样的:地上有n堆石子(每堆石子数量小于10000),每人每次可从任意一堆石子里取出任意多枚石子扔掉,可以取 ...

  8. 信息学奥赛一本通 1970:【15NOIP普及组】扫雷游戏 | OpenJudge NOI 1.8 14:扫雷游戏地雷数计算 | 洛谷 P2670 [NOIP2015 普及组] 扫雷游戏

    [题目链接] ybt 1970:[15NOIP普及组]扫雷游戏 OpenJudge NOI 1.8 14:扫雷游戏地雷数计算 洛谷 P2670 [NOIP2015 普及组] 扫雷游戏 [题目考点] 1 ...

  9. 超级玛丽游戏(洛谷-P1000)

    题目背景 本题是洛谷的试机题目,可以帮助了解洛谷的使用. 题目描述 超级玛丽是一个非常经典的游戏.请你用字符画的形式输出超级玛丽中的一个场景. ********************####.... ...

最新文章

  1. phantomjs介绍
  2. BigData之Hadoop:Hadoop的简介、深入理解、下载、案例应用之详细攻略
  3. java中判断数组中元素出现的次数
  4. 面趣 | 这道微软面试题你会吗?
  5. python打包成exe导入文件_【转载】将python脚本打包成exe文件
  6. 如何安装tensorflowGPU环境搭建(不报AVX2的警告)
  7. MVC的WebApi中开启Session会话支持
  8. 高考1分抵1元!红魔5S游戏手机预售:买吗?
  9. wifi卡慢延迟高_120平套三没网线,吃鸡延迟只有20ms,网件Orbi RBK50路由真香
  10. apicloud链接访问本地数据库
  11. c#通过网络链接打印PDF
  12. xp系统怎么开启usb服务器,windowsxp系统设置usb手机网络分享的方法
  13. wps怎么将字体变得很大_wps如何将字体无限放大
  14. 能打开pdf格式的软件
  15. python画江苏_江苏高考数学再现算法流程图!学过编程的孩子都说So easy!
  16. 安装Mathtype之后,打开word出现错误的解决方法
  17. 《生与死》(瓦特·兰德)
  18. yolov5样本处理方式
  19. NYOJ 137 取石子(三)(教主神题)
  20. Hadoop完全分布式搭建全过程

热门文章

  1. Delphi调用Android的.so文件(转)
  2. JavaScript中一个对象如何继承另外一个对象
  3. Android 屏幕适配攻略(三)单位dp与sp
  4. java基础Runtime类的使用
  5. 使用RemObjects Pascal Script
  6. linux 安装dubbo+zookeeper
  7. 统计学习方法六:支持向量机三(支持向量定量理解和算法总结)
  8. BZOJ 1878: [SDOI2009]HH的项链( BIT )
  9. Html中的map标签
  10. TMaskEdit组件的简单应用