傳送門
非常典型的記憶化搜尋博弈
定義f [i
][j]
f[i][j]
f[i][j
]為從(i,
j)
(i,j)
(i,j
)開始造成的差值大小(先手-後手)
那麼先手希望這個值大,後手希望小
就在各自的回合取max
maxma
x或取min
minmi
n即可
#include
using
namespace std;
int f[
509]
[509
],a[
509]
[509
],n,m,ok[
509]
[509];
bool
isok
(int x,
int y)
intdfs
(int x,
int y)
ok[x]
[y]=1;
int now;if(
(x+y)%2
==0)//後手選擇,必然是取min
else
return f[x]
[y]=now;
}int
main()
}
牛客練習賽21 B 黑妹的遊戲II
有乙個n m的棋盤,每格仔有非負分數,黑妹先手,每次只能下上乙個人選擇的方格的右方或者下方,黑妹和黑弟都在知道最優策略的情況下,從左上角開始到右下角結束,求黑妹最後獲得的分數減去黑弟的分數差是多少。我們由黑妹先手可得,黑妹一定可以獲得左上角和右下角的分數,我們採用逆向dp的思路。dp i j m i...
牛客練習賽21 B 黑妹的遊戲II(博弈DP)
黑妹和黑弟又聚在一起玩遊戲了,這次他們選擇在乙個n m的棋盤上玩遊戲,棋盤上的每個方格都有乙個非負的分數,遊戲從左上角開始右下角結束,雙方交替的選擇乙個方格並獲得方格上相應的分數,一方選擇的方格必須在上一步另一方選擇的方格 的右邊或者下面,黑妹先開始。現在黑妹想知道,如果雙方都採取最優策略 最優策略...
牛客練習賽67 牛妹的蘋果樹
題意 輸出給定的點序號區間中兩點間距離的最大值 思路 考慮倍增思想,st u i 代表從u號節點開始往後2 i個連續數中的直徑的兩個端點。st u i 一定是由 st u i 1 和 st u 2 i 1 i 1 轉移過來的 思考怎麼轉移,顯然對應6種情況 1.若兩個塊中的直徑的端點倆倆之間不存在l...