Mynavi Programming Contest 2021(AtCoder Beginner Contest 201)
https://atcoder.jp/contests/abc201
D - Game in Momotetsu World
由题意可得为一道博弈论题
通过思考可得为博弈DP
其中通过分析可得
所以每次状态转移都得转换视角
当两个人无限聪明时
转换视角后 看到的就是相对于上一个人落后的大小
所以取f[i-1][j]=min(-f[i][j]-a[i][j])
f[i][j-1]=min(-f[i][j]-a[i][j])其中要从后往前dp
如果从前往后dp会受到后继性影响
点击查看代码
int a[2005][2005],dp[2005][2005];
void solve(){
int h,w;cin>>h>>w;
for(int i=1;i<=h;i++)for(int j=1;j<=w;j++){
char ch;cin>>ch;
a[i][j]=ch=='+'?1:0;
dp[i][j]=1e18;
}
dp[h][w]=0;
for(int i=h;i>=1;i--)for(int j=w;j>=1;j--){
dp[i-1][j]=min(-(dp[i][j]+a[i][j]),dp[i-1][j]);
dp[i][j-1]=min(-(dp[i][j]+a[i][j]),dp[i][j-1]);
}
if(dp[1][1] > 0)
puts("Aoki");
if(dp[1][1] < 0)
puts("Takahashi");
if(dp[1][1] == 0)
puts("Draw");
}

浙公网安备 33010602011771号