洛谷P2734 游戏 A Game
传送门
题目大意:从一个序列两端取数,先后手两人
均采用最优策略,问先后手的得分。
题解:
区间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相关推荐
- 题解——洛谷P2734 游戏A Game 题解(区间DP)
题面 题目背景 有如下一个双人游戏:N(2 <= N <= 100)个正整数的序列放在一个游戏平台上,游戏由玩家1开始,两人轮流从序列的任意一端取一个数,取数后该数字被去掉并累加到本玩家的 ...
- 洛谷小游戏大全(用洛谷的人都得知道)
洛谷小游戏大全网址: www.luogu.com.cn/paste/1agz1vs7 其实就是洛谷首页网址加 paste/1agz1vs7 云剪贴板 - 洛谷https://www.luogu.com ...
- 洛谷1846 游戏 dp
题目链接 题意: 给定两个正整数数列,你要用它们来做一个游戏:你需要对数列进行若干次操作,每一次操作,应选择两个正整数K1和K2 ,并删除第一个数列的最后K1个数,计算出它们的和S1:删除第二个数列的 ...
- 动态规划——洛谷_P1057传球游戏
题目: 题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏.游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球, ...
- 洛谷 2953 [USACO09OPEN]牛的数字游戏Cow Digit Game
洛谷 2953 [USACO09OPEN]牛的数字游戏Cow Digit Game 题目描述 Bessie is playing a number game against Farmer John, ...
- 洛谷P4301 [CQOI2013]新Nim游戏
洛谷P4301 [CQOI2013]新Nim游戏 题目描述 传统的Nim游戏是这样的:有一些火柴堆,每堆都有若干根火柴(不同堆的火柴数量可以不同).两个游戏者轮流操作,每次可以选一个火柴堆拿走若干根火 ...
- 洛谷 P2197 nim游戏
洛谷 P2197 nim游戏 题目描述 甲,乙两个人玩Nim取石子游戏. nim游戏的规则是这样的:地上有n堆石子(每堆石子数量小于10000),每人每次可从任意一堆石子里取出任意多枚石子扔掉,可以取 ...
- 信息学奥赛一本通 1970:【15NOIP普及组】扫雷游戏 | OpenJudge NOI 1.8 14:扫雷游戏地雷数计算 | 洛谷 P2670 [NOIP2015 普及组] 扫雷游戏
[题目链接] ybt 1970:[15NOIP普及组]扫雷游戏 OpenJudge NOI 1.8 14:扫雷游戏地雷数计算 洛谷 P2670 [NOIP2015 普及组] 扫雷游戏 [题目考点] 1 ...
- 超级玛丽游戏(洛谷-P1000)
题目背景 本题是洛谷的试机题目,可以帮助了解洛谷的使用. 题目描述 超级玛丽是一个非常经典的游戏.请你用字符画的形式输出超级玛丽中的一个场景. ********************####.... ...
最新文章
- phantomjs介绍
- BigData之Hadoop:Hadoop的简介、深入理解、下载、案例应用之详细攻略
- java中判断数组中元素出现的次数
- 面趣 | 这道微软面试题你会吗?
- python打包成exe导入文件_【转载】将python脚本打包成exe文件
- 如何安装tensorflowGPU环境搭建(不报AVX2的警告)
- MVC的WebApi中开启Session会话支持
- 高考1分抵1元!红魔5S游戏手机预售:买吗?
- wifi卡慢延迟高_120平套三没网线,吃鸡延迟只有20ms,网件Orbi RBK50路由真香
- apicloud链接访问本地数据库
- c#通过网络链接打印PDF
- xp系统怎么开启usb服务器,windowsxp系统设置usb手机网络分享的方法
- wps怎么将字体变得很大_wps如何将字体无限放大
- 能打开pdf格式的软件
- python画江苏_江苏高考数学再现算法流程图!学过编程的孩子都说So easy!
- 安装Mathtype之后,打开word出现错误的解决方法
- 《生与死》(瓦特·兰德)
- yolov5样本处理方式
- NYOJ 137 取石子(三)(教主神题)
- Hadoop完全分布式搭建全过程