![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
博弈
二十一画生
嚶其鳴矣求其友聲
展开
-
博弈论入门小结
博弈论:是二人或多人在平等的对局中各自利用对方的策略变换自己的对抗策略,达到取胜目标的理论。博弈论是研究互动决策的理论。博弈可以分析自己与对手的利弊关系,从而确立自己在博弈中的优势,因此有不少博弈理论,可以帮助对弈者分析局势,从而采取相应策略,最终达到取胜的目的。博弈论分类:(摘自百度百科)(一)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少转载 2013-05-24 20:09:46 · 835 阅读 · 0 评论 -
hdu 1517 A Multiplication Game
//Time 0ms, Memory 280K#includeusing namespace std;int main(){ int n,t; while(cin>>n) { t=18; while(t<n) t*=18; t/=18; if(t*9>=n) cout<<"Stan wins."<<end原创 2013-05-25 21:52:53 · 700 阅读 · 0 评论 -
hdu 1525 Euclid's Game
//Time 78ms, Memory 280K#includeusing namespace std;int main(){ int i,a,b,k; while(cin>>a>>b && (a || b)) { k=0; if(a<b) { i=a;a=b;b=i; }原创 2013-05-27 08:41:09 · 708 阅读 · 0 评论 -
博弈-Green Hackenbush(无向图删边)
转自:http://blog.sina.com.cn/s/blog_8f06da990101252l.htmlGreen Hackenbush Hackenbush游戏是通过移除一个有根图的某些边,直到没有与地板的相连的边。地板用虚线来表示,其中移除某一条边的时候,那条边以上所连着的所有边都会移除,就像砍树枝那样,树枝以上的部分也会被移除。 在这节中,我们讨转载 2013-06-02 20:27:57 · 1023 阅读 · 0 评论 -
hdu 1729 Stone Game
//Time 0ms, Memory 288K#include#includeusing namespace std;int mex(int s,int c){ int q=sqrt(s*1.0); while(q+q*q>=s) q--; if(q<c) return s-c; return mex(q,c);}int main(){ int原创 2013-05-29 21:53:29 · 733 阅读 · 0 评论 -
hdu 1730 Northcott Game
//Time 0ms, Memory 228K#include#include#includeusing namespace std;int main(){ int t,j,n,m,ans; while(scanf("%d%d",&n,&m)!=EOF) { ans=0; for(int i=0;i<n;i++) {原创 2013-05-30 11:07:08 · 778 阅读 · 0 评论 -
hdu 1850 Being a Good Boy in Spring Festival
//Time 15ms, Memory 292K#includeusing namespace std;int main(){ int n,a[101],t; while(cin>>n && n) { t=0; for(int i=0;i<n;i++) { cin>>a[i];原创 2013-05-25 10:19:57 · 667 阅读 · 0 评论 -
hdu 1849 Rabbit and Grass
// Time 15ms, Memory 228K#include#includeusing namespace std;int main(){ int i,m,k; while(scanf("%d",&m) && m) { int ans=0; for(i=0;i<m;i++) { scanf原创 2013-05-30 11:18:33 · 826 阅读 · 0 评论 -
hdu 1848 Fibonacci again and again
// Time 0ms, Memory 236K#include#include#include#includeusing namespace std;int fb[16],sg[1001],v[1001];int mex(int x){ if(sg[x]!=-1) return sg[x]; int i; memset(v,0,sizeof(v));原创 2013-05-30 11:04:27 · 691 阅读 · 0 评论 -
hdu 1564 Play a game
对于本题,若要当前的 player 赢,剩下所走的步数必须是奇数步。所以对于每步的 player 所放弃的选择的步数为偶数步。因此,对于整个 game 来说,所放弃的步数 m 为偶数步,设所走的步数为 k ,则 n*n-1=m+k;即 n 的奇偶性决定了 k 的奇偶性,也就决定了输赢。(如果有误,请提示!!谢了!!!!)代码如下://Time 0ms, Memory 280K#include原创 2013-05-27 13:07:10 · 814 阅读 · 0 评论 -
hdu 1524 A Chess Game
\\Time 31ms, Memory 4312K#include#include#includeusing namespace std;int n,p[1010][1010],sg[1010],b[1010];int mex(int x){ if(sg[x]!=-1) return sg[x]; if(b[x]==0) return 0; int i,v[10原创 2013-05-26 22:10:47 · 817 阅读 · 0 评论 -
hdu 1536 S-Nim
//Time 187ms, Memory 808K#include#include#includeusing namespace std;int s[101],h,ans[101],k,m,sg[10010];int mex(int x){ if(sg[x]!=-1) return sg[x]; int i,v[101]; memset(v,0,sizeof(v原创 2013-05-25 21:22:43 · 695 阅读 · 0 评论 -
hdu 2147 kiki's game
这是一道简单的博弈题。刚开始我用建表的方法来做,代码如下://Time 31ms, Memory 15920K#include#includeusing namespace std;int a[2001][2001];int main(){ int i,j,n,m,t; memset(a,0,sizeof(a)); for(i=0;i<=2000;i++原创 2013-05-25 08:29:04 · 814 阅读 · 0 评论 -
hdu 1404 Digital Deletions
这题我先建了表来做的。可以进行两个操作:1、把其中一个数变为比它小的数;2、把其中一个数字0及其右边的所以数字删除。两人轮流进行操作,//Time 281ms, Memory 4140#include#include#includeusing namespace std;const int maxn=1000000;int sg[maxn]={0};int原创 2013-05-28 16:09:24 · 876 阅读 · 0 评论 -
博弈-翻硬币游戏
转自:http://blog.sina.com.cn/s/blog_8f06da99010125ol.html翻硬币游戏 一般的翻硬币游戏的规则是这样的: N 枚硬币排成一排,有的正面朝上,有的反面朝上。我们从左开始对硬币按1 到N 编号。第一,游戏者根据某些约束翻硬币,但他所翻动的硬币中,最右边那个硬币的必须是从正面翻到反面。例如,只能翻3转载 2013-06-03 08:30:40 · 1097 阅读 · 0 评论 -
hdu 3537 Daizhenyang's Coin(博弈-翻硬币游戏)
题意:每次可以翻动一个、二个或三个硬币。(Mock Turtles游戏)初始编号从0开始。当N==1时,硬币为:正,先手必胜,所以sg[0]=1.当N==2时,硬币为:反正,先手必赢,先手操作后可能为:反反或正反,方案数为2,所以sg[1]=2。当N==3时,硬币为:反反正,先手必赢,先手操作后可能为:反反反、反正反、正反正、正正反,方案数为4,所以sg[2]=4。原创 2013-07-07 11:45:28 · 1624 阅读 · 0 评论