HDU 1850-Being a Good Boy in Spring Festival(Nim博弈)
Being a Good Boy in Spring Festival
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 6293 Accepted Submission(s): 3779
Problem Description
一年在外 父母時刻牽掛
春節回家 你能做幾天好孩子嗎
寒假裡嘗試做做下面的事情吧
陪媽媽逛一次菜場
悄悄給爸爸買個小禮物
主動地 強烈地 要求洗一次碗
某一天早起 給爸媽用心地做回早餐
如果願意 你還可以和爸媽說
我們們玩個小遊戲吧 ACM課上學的呢~
下面是一個二人小遊戲:桌子上有M堆撲克牌;每堆牌的數量分別為Ni(i=1…M);兩人輪流進行;每走一步可以任意選擇一堆並取走其中的任意張牌;桌子上的撲克全部取光,則遊戲結束;最後一次取牌的人為勝者。
現在我們不想研究到底先手為勝還是為負,我只想問大家:
——“先手的人如果想贏,第一步有幾種選擇呢?”
春節回家 你能做幾天好孩子嗎
寒假裡嘗試做做下面的事情吧
陪媽媽逛一次菜場
悄悄給爸爸買個小禮物
主動地 強烈地 要求洗一次碗
某一天早起 給爸媽用心地做回早餐
如果願意 你還可以和爸媽說
我們們玩個小遊戲吧 ACM課上學的呢~
下面是一個二人小遊戲:桌子上有M堆撲克牌;每堆牌的數量分別為Ni(i=1…M);兩人輪流進行;每走一步可以任意選擇一堆並取走其中的任意張牌;桌子上的撲克全部取光,則遊戲結束;最後一次取牌的人為勝者。
現在我們不想研究到底先手為勝還是為負,我只想問大家:
——“先手的人如果想贏,第一步有幾種選擇呢?”
Input
輸入資料包含多個測試用例,每個測試用例佔2行,首先一行包含一個整數M(1<M<=100),表示撲克牌的堆數,緊接著一行包含M個整數Ni(1<=Ni<=1000000,i=1…M),分別表示M堆撲克的數量。M為0則表示輸入資料的結束。
Output
如果先手的人能贏,請輸出他第一步可行的方案數,否則請輸出0,每個例項的輸出佔一行。
Sample Input
3
5 7 9
0
Sample Output
1
Author
lcy
Source
Recommend
lcy | We have carefully selected several similar problems for you: 1848 1849 1847 2147 1846
Nim博弈:
Nim博弈:
定義: 假設 (xm · · · x0)2 和(ym · · · y0)2 的nim-sum是(zm · · · z0)2,
則我們表示成 (xm · · · x0)2 ⊕ (ym · · · y0)2 = (zm · · · z0)2, 這裡,zk = xk + yk (mod 2)(k=0…m).
對於nim遊戲的某個位置(x1,x2,x3),當且僅當它各部分的nim-sum等於0時(即x1⊕x2⊕x3=0),則當前位於必敗點。
則我們表示成 (xm · · · x0)2 ⊕ (ym · · · y0)2 = (zm · · · z0)2, 這裡,zk = xk + yk (mod 2)(k=0…m).
對於nim遊戲的某個位置(x1,x2,x3),當且僅當它各部分的nim-sum等於0時(即x1⊕x2⊕x3=0),則當前位於必敗點。
解題思路:
所有的按位與res和a[i]的按位與等於除a[i]以外的所有堆的按位與,此值若小於a[i],則只要在a[i]中取出一定的值,就能形成奇異局勢(先手必輸,後手必贏的狀態)
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int a[101];
int main()
{
int m;
while(cin>>m,m)
{
memset(a,0,sizeof(0));
int i,res=0,ans=0;
for(i=0; i<m; ++i)
{
cin>>a[i];
res=res^a[i];
}
for(i=0; i<m; i++)
if(a[i]>(res^a[i]))
++ans;
cout<<ans<<endl;
}
return 0;
}
相關文章
- codeforces 15C Industrial Nim(NIM 博弈)
- 博弈論入門之nim遊戲遊戲
- HDU 1847-Good Luck in CET-4 Everybody!(博弈-SG函式/找規律)Go函式
- 博弈學習(一) NIM + SG函式函式
- Nim遊戲(一堆/N堆)-博弈遊戲
- Spring Festival and BenzhuSpring
- 博弈論基礎之sg函式與nim函式
- 【博弈論】HDU - 7216 Triangle GameGAM
- 博弈論:公平組合遊戲(Nim 遊戲 & SG 定理)學習筆記遊戲筆記
- HDU 5795 A Simple Nim (SG函式+打表找規律)函式
- HDU 1846-Brave Game(巴什博弈-SG函式)GAM函式
- HDU 5973-Game of Taking Stones(威佐夫博弈-JAVA BigDecimal)GAMJavaDecimal
- POJ 2311-Cutting Game(Nim博弈-sg函式/記憶化搜尋)GAM函式
- The Dragon Boat FestivalGo
- Drangon Boat FestivalGo
- dragon boat festivalGo
- HDU 1847 Good Luck in CET-4 Everybody!(找規律版巴什博奕)Go
- HDU 2897-邂逅明下(博弈-SG函式打表找規律)函式
- If I were a boy againAI
- The Taste of Dragon Boat FestivalASTGo
- Nim遊戲遊戲
- GOODGo
- HDU 1848 Fibonacci again and again (尼姆博弈+sg函式)AI函式
- 博弈學習(三) HDU 1538 A Puzzle for Pirates(經典的海盜分金推理)
- The dragon Boat Festival revisedGo
- 2_The Dragon boat festivalGo
- Dragon Boat Festival RevisedGo
- 洛谷P2197 nim遊戲(Nim遊戲)遊戲
- Nim教程【六】
- Nim教程【二】
- Nim教程【三】
- Nim教程【四】
- Nim教程【五】
- Nim教程【九】
- Nim教程【十】
- Nim教程【十一】
- Nim教程【十二】
- Nim教程【十四】