有乙個n*m的棋盤,每格仔有非負分數,黑妹先手,每次只能下上乙個人選擇的方格的右方或者下方,黑妹和黑弟都在知道最優策略的情況下,從左上角開始到右下角結束,求黑妹最後獲得的分數減去黑弟的分數差是多少。
我們由黑妹先手可得,黑妹一定可以獲得左上角和右下角的分數,我們採用逆向dp的思路。 dp
[i][
j]=m
in(d
p[i]
[j],
−dp[
i][j
]+a[
i][j
])d p[
i][j
]=mi
n(dp
[i][
j],−
dp[i
][j]
+a[i
][j]
)
#include
using
namespace
std;
const
int inf = 0x3f3f3f3f;
const
int n = 505;
int a[n][n];
int dp[n][n];
int main() }}
printf("%d\n", dp[1][1]);
}return
0;}
牛客練習賽21 B 黑妹的遊戲II(博弈DP)
黑妹和黑弟又聚在一起玩遊戲了,這次他們選擇在乙個n m的棋盤上玩遊戲,棋盤上的每個方格都有乙個非負的分數,遊戲從左上角開始右下角結束,雙方交替的選擇乙個方格並獲得方格上相應的分數,一方選擇的方格必須在上一步另一方選擇的方格 的右邊或者下面,黑妹先開始。現在黑妹想知道,如果雙方都採取最優策略 最優策略...
牛客練習賽21 黑妹的遊戲 記憶化搜尋
傳送門 非常典型的記憶化搜尋博弈 定義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 in...
牛客練習賽4 B
思維題,把 i2 j2 ai2 aj2 絕對值符號去掉後,我們設i2 j2 ai2 aj2 j2 i2 aj2 ai2 j2 aj2 i2 ai2 或者 i2 j2 ai2 aj2 j2 i2 aj2 ai2 ai2 i2 aj2 j2 原式化簡後只有這兩種形式,那麼我們可以設定兩個陣列a n b ...