Mynavi Programming Contest 2021(AtCoder Beginner Contest 201)

省四弱鸡發表於2024-04-05

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");

}
F - Insertion Sort 感覺洛谷的題解很不錯類 (懶得寫(bushi

相關文章