記憶化搜尋(遊戲NOIP17提高模擬訓練11)

2021-08-04 11:13:01 字數 1129 閱讀 8698

alice和bob在玩乙個遊戲,遊戲是在乙個n*n的矩陣上進行的,每個格仔上都有

乙個正整數。當輪到alice/bob時,他/她可以選擇最後一列或最後一行,並將其刪除,但

必須保證選擇的這一行或這一列所有數的和為偶數。如果他/她不能刪除最後一行或最後一

列,那麼他/她就輸了。兩人都用最優策略來玩遊戲,alice先手,問alice是否可以必勝?

第一行:t,表示資料組數

對於每組資料的第一行:n

接下來n行,每行n個數,描述這個矩陣

如果alice必勝輸出w,否則輸出l

2

22 4

6 83

5 4 2

1 5 9

7 3 8

l

w

100%資料滿足

1<=n<=1000

保證每一行或每一列的和不會超過2*10^9

1<=t<=5

30%資料滿足

1<=n<=5

50%資料滿足

1<=n<=100

70%資料滿足

1<=n<=500

2s256m

思路就是記憶化搜尋,每一次標記一下是誰下這個點。可以預處理一下資料,加快執行的速度。

#includeusing namespace std;

int map[2000][2000],hang[2000][2000],lie[2000][2000];

bool book [2000][2000][2];

bool dp[2000][2000][2];

int n;

bool dfs(int i,int j,bool point)

book[i][j][point]=1;

return dp[i][j][point];}

int main()

for(int j=1;j<=n;j++)

for(int i=1;i<=n;i++)

lie[i][j]=lie[i-1][j]+map[i][j];

if(dfs(n,n,0))cout<<"w\n";

else cout<<"l\n";

} return 0;

}

樹形dp(數字轉換NOIP17提高模擬訓練4)

如果乙個數x的約數和 不包括它本身,下同 比它本身小,那麼x可以變成它的約數和 如果對於某個y x且y的約數和為x,那麼x也可以變成y。例如,4可以變為3,1可以變為7。限定所有的數字變換在不超過n的正整數範圍內進行,求不斷進行數字變換且沒有重複數字出現的最多變換步數。輸入乙個正整數n。輸出最少需要...

NOIP模擬 記憶化搜尋 動態規劃 遊戲

題目描述 題目大意 有n個物品排成一排,從左往右第i個價值為a i 有兩個人從左往右輪流取物品。第乙個人可以拿一或兩個物品。如果前乙個人拿了k個,下乙個人只能拿k或k 1個。如果剩下的物品不夠拿,就結束。問如果大家都採取最優策略,那麼先手拿的物品的價值最多能比後手多多少。1 n 20000 樣例輸入...

樹形dp(人品問題NOIP17提高模擬訓練3)

網上出現了一種高科技產品 人品測試器。只要你把你的真實姓名輸入進去,系統將自動輸出你的人品指數。把兒不相信自己的人品為0。經過了許多研究後,把兒得出了乙個更為科學的人品計算方法。這種方法的理論依據是乙個非常重要的結論 人品具有遺傳性。因此,乙個人的人品完全由他的祖先決定。把兒提出的人品計算方法相當簡...