wikioi 1037 取數遊戲

2021-06-19 13:42:22 字數 960 閱讀 1624

有乙個有趣得取數遊戲。初始時,給出乙個環,環上得每條邊上都有乙個非負整數。這些整數中至少有乙個時0。然後,將一枚硬幣放在環上得乙個節點上。二個玩家就是以這個放硬幣得節點為起點開始這個遊戲,二人輪流取數,取數得規則如下:

(1)選擇硬幣左邊或右邊得一條邊,並且邊上得數非0;

(2)將這條邊上的數減至任意乙個非負整數(至少要有所減小);

(3)將硬幣移到邊的另一端。

如果輪到乙個玩家走,這時硬幣左右兩邊的邊上的數值都是0,那麼這個玩家就輸了。

如下圖所示,描述的時愛麗思和鮑勃兩人的對弈過程,其中黑色節點表示硬幣所在節點,結果圖(d)中,輪到鮑勃走時,硬幣兩邊的邊上都是0。所以愛麗思獲勝。

現在你的任務是根據給出的環、邊上的數值以及起點(硬幣所在位置),判斷先走方是否有必勝的策略。

博弈遊戲,考慮如何使對手必敗

如果二手不把他走過的邊變為0,那麼先手可以在下一步中往回走,也就是走剛才二手走的邊,並把這條邊變為0,由此,二手則必敗。

由此2個人都要把邊降為0

如果先手的位置走過奇數步(一直往左走或者往右走),能夠到達0這條邊之前的那個點,那麼先手必勝,否則,先手必敗。

#include#include#include#include#includeusing namespace std;

int go[25];

int vis[25];

int main()

for(int i=n;i>=1;i--)

int tot1=0;//一邊

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

int tot2=0;//另一邊

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

if(tot1%2==1||tot2%2==1)printf("yes\n");//中有乙個是偶數

else printf("no\n");

return 0;

}

wikioi 1166矩陣取數遊戲

本質上就是乙個在一行中頭尾取數情況下求出分數最大值。設d i,j 表示該行從i到j的合併分數 則d i,j 2 max 由於時間比較晚了,可能不夠時間寫高精度,先存普通版本演算法 include include include define maxn 100 int map maxn maxn in...

wikioi 1166 矩陣取數遊戲

問題描述 帥帥經常跟同學玩乙個矩陣取數遊戲 對於乙個給定的n m 的矩陣,矩陣中的每個元素aij均 為非負整數。遊戲規則如下 1.每次取數時須從每行各取走乙個元素,共n個。m次後取完矩陣所有元素 2.每次取走的各個元素只能是該元素所在行的行首或行尾 3.每次取數都有乙個得分值,為每行取數的得分之和,...

1308 取數遊戲

description alice想讓bob陪他去看 唐山大 但由於bob是個很感性的人,怕流淚不想去,但又不好意思以這個作為拒絕的理由,便提出玩乙個遊戲。n個正整數圍成一圈,規則如下 兩個玩家輪流取數 最開始先手的玩家可以取任意乙個數x 從第二步開始當前玩家只能取x 上一玩家剛剛取的數 左右兩邊相...