博弈論初級入門題目

2021-06-09 06:54:34 字數 2541 閱讀 2526

詳細資料參見博弈論入門

hdu 1846 巴什博弈,只要n%(m + 1)==0肯定輸。

#include int main()

return 0;

}

hdu 1847 推一下就可以得到結果了。當然也可以用sg函式去求解。

#includeint main()

return 0 ;

}

hdu 1848 直接寫sg函式,然後就是異或判斷就行了。

#include #include #define maxn 1010

int sg[maxn] ;

int fib[maxn] ;

bool mex[maxn] ;

int top ;

void get_fib()

}}void get_sg()

int j = 0 ;

while(mex[j++]) ;

sg[i] = --j ;

}}int main()

return 0 ;

}

hdu 1849

nim的變形。

#include int main()

puts(ans ? "rabbit win!" : "grass win!") ;

}return 0 ;

}

hdu 1850 nim的變形,輸出有多少中情況的。先將全部的數異或,然後將異或的結果與第i堆數量進行異或,如果得到的結果小於該堆的數量,則有一種方案。具體的推理很簡單,仔細想一下就知道了。

#include #define maxn 100

int num[maxn] ;

int main()

int ans = 0 ;

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

}printf("%d\n" , ans) ;

}return 0 ;

}

hdu 2149 又是一道巴什博弈,只不過這次要輸出第一次可以出哪些值。直接上**吧,

#include int main()

if(m/(n + 1))

else

printf("\n") ;}}

}

hdu 2188 巴什博弈

#include int main()

return 0 ;

}

hdu 1079 直接用sg函式,或者推一下規律。

#include int main()

return 0 ;

}

hdu 1517 找規律,或者sg函式

#includeint main()

return 0;

}

hdu 1404 按照給定的過程模擬一下,計算出每個點的sg值

/*

* 模擬 + sg函式

*/#include #include #include const int maxn = 1000000 ;

char str[10] ;

int sg[maxn + 1] ;

void init()

else

}str[k] = curr ;

}sg[i] = !val ;

}}int main()

if(sign)

puts("yes") ;

else

puts("no") ;

}return 0 ;

}

hdu 1536 sg函式,跟斐波那契那道差不過的題目。

#include #include #include #define maxn 105

int si[maxn] ;

int sg[maxn * 100] ;

bool mex[maxn * 100] ;

int m ;

int n ;

int cmp(const void * a , const void * b)

void predour_sg()

int k = 0 ;

while(mex[k ++]) ;

sg[i] = --k ;

}}int main()

qsort(si , m , sizeof(si[0]) , cmp) ;

predour_sg() ;

scanf("%d" , &n) ;

while(n--)

if(ans)

putchar('w') ;

else

putchar('l') ;

}putchar('\n') ;

}return 0 ;

}

博弈論入門

博弈論 是二人或多人在平等的對局中各自利用對方的策略變換自己的對抗策略,達到取勝目標的理論。博弈論是研究互動決策的理論。博弈可以分析自己與對手的利弊關係,從而確立自己在博弈中的優勢,因此有不少博弈理論,可以幫助對弈者分析局勢,從而採取相應策略,最終達到取勝的目的。一.bash博弈 問題 只有一堆n個...

博弈論入門

參考 三個簡單的博弈論問題 博弈 1066 bash遊戲 原題傳送 有一堆石子共有n個。a b兩個人輪流拿,a先拿。每次最少拿1顆,最多拿k顆,拿到最後1顆石子的人獲勝。假設a b都非常聰明,拿石子的過程中不會出現失誤。給出n和k,問最後誰能贏得比賽。例如n 3,k 2。無論a如何拿,b都可以拿到最...

博弈論入門

什麼是博弈 通俗地講,博弈就是指遊戲中的一種選擇策略的研究。博弈的英文為 game 我們一般將它翻譯成 遊戲 而在英語中,game 的意義不同於漢語中的遊戲,它是人們遵循一定規則的活動,進行活動的人的目的是讓自己 贏 我們在和對手競賽或遊戲的時候怎樣使自己贏呢?這不但要考慮自己的策略,還要考慮其他人...