博弈
二十一画生
嚶其鳴矣求其友聲
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
博弈论入门小结
博弈论:是二人或多人在平等的对局中各自利用对方的策略变换自己的对抗策略,达到取胜目标的理论。博弈论是研究互动决策的理论。博弈可以分析自己与对手的利弊关系,从而确立自己在博弈中的优势,因此有不少博弈理论,可以帮助对弈者分析局势,从而采取相应策略,最终达到取胜的目的。 博弈论分类:(摘自百度百科) (一)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规 定每次至少转载 2013-05-24 20:09:46 · 933 阅读 · 0 评论 -
hdu 1517 A Multiplication Game
//Time 0ms, Memory 280K#include using 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 · 773 阅读 · 0 评论 -
hdu 1525 Euclid's Game
//Time 78ms, Memory 280K#include using 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 · 776 阅读 · 0 评论 -
博弈-Green Hackenbush(无向图删边)
转自:http://blog.sina.com.cn/s/blog_8f06da990101252l.html Green Hackenbush Hackenbush游戏是通过移除一个有根图的某些边,直到没有与地板的相连的边。地板用虚线来表示,其中移除某一条边的时候,那条边以上所连着的所有边都会移除,就像砍树枝那样,树枝以上的部分也会被移除。 在这节中,我们讨转载 2013-06-02 20:27:57 · 1149 阅读 · 0 评论 -
hdu 1729 Stone Game
//Time 0ms, Memory 288K#include #include using 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 · 805 阅读 · 0 评论 -
hdu 1730 Northcott Game
//Time 0ms, Memory 228K#include #include #include using 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 · 861 阅读 · 0 评论 -
hdu 1850 Being a Good Boy in Spring Festival
//Time 15ms, Memory 292K#include using 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 · 744 阅读 · 0 评论 -
hdu 1849 Rabbit and Grass
// Time 15ms, Memory 228K#include #include using 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 · 911 阅读 · 0 评论 -
hdu 1848 Fibonacci again and again
// Time 0ms, Memory 236K#include #include #include #include using 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 · 761 阅读 · 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 · 890 阅读 · 0 评论 -
hdu 1524 A Chess Game
\\Time 31ms, Memory 4312K#include #include #include using 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 · 894 阅读 · 0 评论 -
hdu 1536 S-Nim
//Time 187ms, Memory 808K#include #include #include using 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 · 762 阅读 · 0 评论 -
hdu 2147 kiki's game
这是一道简单的博弈题。刚开始我用建表的方法来做,代码如下: //Time 31ms, Memory 15920K #include #include using 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 · 964 阅读 · 0 评论 -
hdu 1404 Digital Deletions
这题我先建了表来做的。 可以进行两个操作: 1、把其中一个数变为比它小的数; 2、把其中一个数字0及其右边的所以数字删除。 两人轮流进行操作, //Time 281ms, Memory 4140#include #include #include using namespace std; const int maxn=1000000; int sg[maxn]={0}; int原创 2013-05-28 16:09:24 · 951 阅读 · 0 评论 -
博弈-翻硬币游戏
转自:http://blog.sina.com.cn/s/blog_8f06da99010125ol.html 翻硬币游戏 一般的翻硬币游戏的规则是这样的: N 枚硬币排成一排,有的正面朝上,有的反面朝上。我们从左开始对硬币按1 到N 编号。 第一,游戏者根据某些约束翻硬币,但他所翻动的硬币中,最右边那个硬币的必须是从正面翻到反面。例如,只能翻3转载 2013-06-03 08:30:40 · 1174 阅读 · 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 · 1729 阅读 · 0 评论
分享