首页 > 其他分享 >AtCoder Beginner Contest 201 D - Game in Momotetsu World

AtCoder Beginner Contest 201 D - Game in Momotetsu World

时间:2023-09-01 22:56:09浏览次数:40  
标签:201 AtCoder Beginner Momotetsu int -- Game World Takahashi

D - Game in Momotetsu World


原题链接


题意
有一个 H×W 的方格,每个方格里写着 '+' 或 '-'
有一个初始在 (1,1),(也就是左上角)的棋子,
Takahashi 和 Aoki 轮流向右或向下移动(Takahashi 先手)。
移动到写着 '+' 的方格上后,进行该步移动的玩家分数 +1。
否则该玩家分数 −1,走到右下角后游戏结束。
问双方都进行最佳操作时,哪一方获胜?


思路:i+j为偶数格子时是Aoki走,奇数时Takahashi走,都按各自的最优走法走


#include <bits/stdc++.h>
using namespace std;
const int N = 2010;
int f[N][N],g[N][N];//f[i][j]=T得分-A得分
char tmp[N][N];

int main()
{
	int n,m;
	cin>>n>>m;
	
	for(int i=0;i<n;i++)//0~n-1 0~m-1的方格
	{
		cin>>tmp[i];
		for(int j=0;j<m;j++)
		{
			g[i][j]= tmp[i][j]=='+'? 1:-1;//价值
		}
	}
	
	//初始化
	f[n-1][m-1]=0;
	for(int j=m-2;j>=0;j--)
	{
		if((j+n-1)%2==0)//(i+j)为偶数,即T走路来获取分数
		{
			f[n-1][j]=f[n-1][j+1]+g[n-1][j+1];
		}
		else
		{
			f[n-1][j]=f[n-1][j+1]-g[n-1][j+1];
		}
	}
	for(int i=n-2;i>=0;i--)
	{
		if((i+m-1)%2==0)
		{
			f[i][m-1]=f[i+1][m-1]+g[i+1][m-1];
		}
		else
		{
			f[i][m-1]=f[i+1][m-1]-g[i+1][m-1];
		}
	}


	for(int i=n-2;i>=0;i--)
	{
		for(int j=m-2;j>=0;j--)
		{
			if((i+j)%2==0)//
			{
				f[i][j]=max(f[i+1][j]+g[i+1][j],f[i][j+1]+g[i][j+1]);
			}
			else
			{
				f[i][j]=min(f[i+1][j]-g[i+1][j],f[i][j+1]-g[i][j+1]);//各自按照最优策略走
			}
		}
	}

	if(f[0][0]>0) cout<<"Takahashi\n";
	else if(f[0][0]<0) cout<<"Aoki\n";
	else cout<<"Draw\n";
	//cout<<f[0][0]<<'\n';
}

标签:201,AtCoder,Beginner,Momotetsu,int,--,Game,World,Takahashi
From: https://www.cnblogs.com/oystercard/p/17673006.html

相关文章

  • AtCoder Beginner Contest 317 D - President
    D-President原题链接题意:一共n轮,每一轮Xi>Yi(票数)时,X可以获得Zi张席位,反之亦然;最终席位总和多的就获胜;因此要使X获胜,求Y至少要给X多少个票思路:数据范围小,Z的和小于1e5可以用01背包的方法,前i轮中,X获得的席位不超过j的最小票数,再对X获胜情况中(X的席位>=m/2+1)取最小......
  • NOIP2012提高组初赛易错题解析
    一.3. 错误原因:忘记了解析:Intel是全球最大的CPU厂商,AMD是世界上首个研发出7纳米CPU的厂商 6.错误原因:忘记了解析:ENIAC是世界上首台计算机,属于第一代计算机,即电子管计算机 10.错误原因:选项理解错误解析:A由蝙蝠,发明雷达是正确的,B因特网的发明与蜘蛛网无关,只是形......
  • NOIP2011提高组初赛易错题解析
    一.7.错误原因:不知道解析:快速排序在理论上最低的时间复杂度为O(n),但实际最低的时间复杂度为O(nlogn) 二.1.错误原因:漏项了解析:这棵树最少有12层,但题目是问可能是几层,所以还可能是2011层 5.错误原因:漏了一种情况解析:这道题的树有两种,所以答案也有两种 ......
  • AtCoder Beginner Contest 317 C - Remembering the Days
    C-RememberingtheDays原题链接题意:每个点最多经过一次,求最长路思路:数据范围很小,深搜每个点能到其他点的所有路,取最大#include<bits/stdc++.h>usingnamespacestd;constintN=110;intg[N][N];intn,m;boolst[N];intw=0;intans=0;voiddfs(intu){ st[......
  • AtCoder Beginner Contest 317
    A-Potions#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongintpower(intx,inty,intp){x%=p;intans=1;while(y){if(y&1)ans=ans*x%p;y>>=1,x=x*x%p;}......
  • BUUCTF [安洵杯 2019]easy_web
    试试模板注入发现,不行,然后伪协议,不行,再爆破目录也不行。从?img=TXpVek5UTTFNbVUzTURabE5qYz0入手,可能是base64编码。base64解码:(不知道为什么别的WP上变成这样了,否则解不出来)TXpVek5UTTFNbVUzTURabE5q得到:MzUzNTM1MmU3MDZlNj再base64解码:MzUzNTM1MmU3MDZl得到:353535......
  • AtCoder Beginner Contest 292 E - Transitivity
    E-Transitivity原题链接题意:对于一个有向图,进行加边操作,使最终任意的个点具有传递效果,即若a到b有边,b到c有边,那么a到c也要有边,问最少需要进行多少次操作,使得每个节点所能到达的地方都有直接的边,也就是最短距离为1思路:怎么加边才是最优的,举个例子a->b->c->d->e对于a点到其他......
  • P4344 SHOI2015 脑洞治疗仪
    \(P4344\)[\(SHOI2015\)]脑洞治疗仪一、题目描述曾经发明了自动刷题机的发明家\(SHTSC\)又公开了他的新发明:脑洞治疗仪——一种可以治疗他因为发明而日益增大的脑洞的神秘装置。为了简单起见,我们将大脑视作一个\(01\)序列。\(1\)代表这个位置的脑组织正常工作,\(0\)代表......
  • AtCoder Beginner Contest 292 D - Unicyclic Components
    D-UnicyclicComponents原题链接题意:判断一个连通块的边和点个数是否相同思路:对它使用并查集吧点击查看代码#include<bits/stdc++.h>usingnamespacestd;constintN=200010,M=N<<1;//维护连通图中点和边的个数intsd[N],se[N],p[N];boolf[N];//谁是祖宗int......
  • ogg 的抽取进程 2015-06-17 05:51:08 ERROR OGG-02077
    报错信息如下HowtoresolveExtractAbendingWithOGG-02077Error(DocID2037420.1)这种情况是把抽取进程注册到数据库中了,你又强制启动相同的抽取进程,就会与数据库中注册的进程冲突,你可以执行下边语句删除数据库中抽取进程Stepstoclearthespecificextractcomponen......