牛客练习赛21:B. 黑妹的游戏II(博弈DP)
链接:https://www.nowcoder.com/acm/contest/130/B
来源:牛客网
题目描述
游戏从左上角开始右下角结束,双方交替的选择一个方格并获得方格上相应的分数,一方选择的方格必须在上一步另一方选择的方格
的右边或者下面,黑妹先开始。现在黑妹想知道,如果双方都采取最优策略(最优策略是指双方都希望最终自己的总分数减去对方的总分数最大),她的总分数减去黑弟的总分数会是多少?
输入描述:
第一行一个整数T表示数据的组数。(1 ≤ T ≤ 20) 对于每组数据: 第一行两个整数n,m表示棋盘的规格。(1 ≤ n, m ≤ 500) 接下来n行每行m个整数aij表示方格对应的分数。()
输出描述:
对于每组数据输出一行表示答案。
可以推出对于当前格子(i, j),如果i+j为偶数就一定轮到黑弟,i+j为奇数就一定轮到黑妹
所以可以设dp[i][j]表示黑妹分数-黑弟分数的最大值
假设当前轮到黑妹,那么决策就为:如果往右移能使分数差更大就往右移,往下移能使分数差更大就往下移
那么有转移方程:dp[i][j] = max(dp[i+1][j], dp[i][j+1])-a[i][j];
同理轮到黑弟有:dp[i][j] = min(dp[i+1][j], dp[i][j+1])+a[i][j];
dp的话边界处理比较麻烦,建议记忆化搜索
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define LL long long
LL dp[505][505], a[505][505];
int main(void)
{LL T, i, j, n, m;scanf("%lld", &T);while(T--){scanf("%lld%lld", &n, &m);for(i=1;i<=n;i++){for(j=1;j<=m;j++)scanf("%lld", &a[i][j]);}for(i=n;i>=1;i--){for(j=m;j>=1;j--){if(i==n && j==m){if((i+j)%2==0)dp[i][j] = a[i][j];elsedp[i][j] = -a[i][j];}else if(i==n){if((i+j)%2==0)dp[i][j] = dp[i][j+1]+a[i][j];elsedp[i][j] = dp[i][j+1]-a[i][j];}else if(j==m){if((i+j)%2==0)dp[i][j] = dp[i+1][j]+a[i][j];elsedp[i][j] = dp[i+1][j]-a[i][j];}else{if((i+j)%2==0)dp[i][j] = min(dp[i+1][j], dp[i][j+1])+a[i][j];elsedp[i][j] = max(dp[i+1][j], dp[i][j+1])-a[i][j];}}}printf("%lld\n", dp[1][1]);}return 0;
}
牛客练习赛21:B. 黑妹的游戏II(博弈DP)相关推荐
- 牛客练习赛21:A. 黑妹的游戏I
链接:https://www.nowcoder.com/acm/contest/130/A 来源:牛客网 题目描述 黑妹最近在玩一个有趣的游戏,游戏规则是这样的: 刚开始黑板上有三个不同的初始数字,然 ...
- 牛客练习赛34 E little w and Digital Root(数位dp)
title: 牛客练习赛34 E little w and Digital Root(数位dp) date: 2018-12-17 22:38:37 tags: 数位dp categories:ACM ...
- 牛客练习赛63 F.牛牛的树行棋(博弈 SG函数)
题目链接:https://ac.nowcoder.com/acm/contest/5531/F 牛牛的树行棋 前置知识 思路 代码 前置知识 这道题目需要博弈论中的SG函数的知识,这里就不多赘述.主要 ...
- 2021牛客练习赛90
2021牛客练习赛90 B.寒冬信使 C.盾与战锤 B.寒冬信使 题目链接:https://ac.nowcoder.com/acm/contest/11180/B code: #include< ...
- 牛客练习赛58 C.矩阵消除游戏
牛客练习赛58 C.矩阵消除游戏 题目链接 题目描述 牛妹在玩一个名为矩阵消除的游戏,矩阵的大小是n行m列,第i行第j列的单元格的权值为ai,ja_{i,j}ai,j ,牛妹可以进行k个回合的游戏, ...
- 牛客练习赛81 E. 小 Q 与函数求和 1( “简单莫比乌斯反演” ,欧拉函数性质)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 牛客练习赛81 E. 小 Q 与函数求和 1( "简单莫比乌斯反演" ) Prob ...
- 解题报告(一)C、(牛客练习赛41 F)简单数学题(数论 + FWT)(3.5)
繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...
- 牛客练习赛34 - C little w and Segment Coverage(思维、树状数组)
title: 牛客练习赛34 - C little w and Segment Coverage(思维.树状数组) date: 2018-12-15 16:36:55 tags: [树状数组,思维] ...
- 牛客练习赛52 | C | [烹饪] (DP,裴蜀定理,gcd)
牛客练习赛52 C 烹饪 链接:https://ac.nowcoder.com/acm/contest/1084/C来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 327 ...
最新文章
- OC和JS互相调用小框架
- java线程实现方式
- python土木_土木和结构工程师用Python-Python for civil and structural engineers
- 46 FI配置-财务会计-固定资产-一般评估-指定平行货币的使用
- 每个Linux用户都应该了解的命令行省时技巧
- 火星上首座虚拟房屋以超过50万美元价格售出
- 操作数据----DML语句
- 音频、视频等文件格式(.ts、.meta)及其认识
- 两台windows笔记本创建家庭组实现文件共享
- 别样的唐诗宋词汇——基于Python的量化分析挖掘尝试
- word批量转换为pdf python脚本
- java实现即时通讯_java实现WebSocket即时通信
- 普通代码签名证书和EV代码签名证书的区别
- 帝国霸业服务器无限加载,帝国霸业银河生存1.0正式版开局生存流程指南
- 网站搜索功能lucene
- HMM详细讲解与代码的实现
- infra-structure Ad Hoc
- 【5G核心网】5G概念之-MICO Mode
- java 控制器的类型和作用,跳转页面的方式
- 电视剧《猎毒人》观后感
热门文章
- python怎么读写文件-python怎么读取文件内容
- python零基础能学吗-python 零基础该怎么学?
- python编程入门-Python编程入门经典pdf(Python编程入门教程) 高清中文版
- python基础教程代码-Python基础教程代码怎么是英文 看不懂啊?
- 长虹智慧厨房解决方案,让你AI上智慧家居生活
- 移动web-使一个盒子水平垂直居中的六种方法
- vue element-ui只有一条信息时默认选中按钮,且不能取消,多条信息时可以手动选择
- java md5算法_JAVA实现MD5算法
- 单调栈:leetcode 84. 柱状图中最大的矩形/85最大矩形
- LeetCode113. 路径总和||