博弈论

来源:互联网 发布:淘宝上的呼死你叫什么 编辑:程序博客网 时间:2024/05/19 06:37

博弈论之初步

vijos 1281 Easy Selection

背景

wind发明了一个好玩的游戏,叫小杉(lolanv)一起玩。(p1202)
但小杉玩了十几盘,总是输,他想知道是不是从一开始他就注定要输。
描述
这个游戏是这样的,wind先写下一排数。既然是一排,当然有首尾咯。
wind和小杉(lolanv)每次只能从这排数的头或尾取一个数。
最后谁取的数的和多,谁就赢了。如果两人的和一样多,先取者胜。
有天swgr看到他们俩在玩这个游戏,很好奇。
他想知道,在两人总是做出最优决策的情况下(两个人的智商都是很高的……),
谁能取得最终的胜利呢?

格式

输入格式

第一行为一个数k(k<=10),表示有k组测试数据。
以下k组测试数据。
每组测试数据中,第一行仅有一个偶数n(0

输出格式

对每组测试数据输出一行
表示在两人总是做出最优决策的情况下,
最终的胜利者的名字,即”wind”或”lolanv”(引号不输出)。

样例

样例输入1

2
2
1
1 3
2
0
1 3

样例输出1

lolanv
wind

限制

每个测试点1s

提示

大数据随机生成
认真阅读题目的每一个字哦~ ^_^

————————-这里是分割线———————————

今天闲着没事,不知不觉看到了博弈论这三个字。Out of couriosty,我就打开看了看,找到AC率最高的一道(1281)看看运气。刚看到题目描述我就吓了一跳,这算神马啊,小学题嘛。。
然后我就很不屑的写了一个特别简单的程序,思想就是每次挑大的,记录sum_wind,和总共的sum;如果sum_wind小于sum-sum_wind,就是另一个人大。结果可想而知。。。
唉,博弈论,什么是博弈论啊!!!!

《孙子兵法》是我国乃至世界最早的一部经典博弈论著作。

——看到这里我好像懂了点什么。。
所谓“博弈论”,有被称为对策论(Games Theory),是研究具有斗争或竞争性 质现象的理论和方法,它既是现代数学的一个新分支,也是运筹学的一个重要学科。
嗯,感觉和贪心比较像,但又好像不是,据我理解,博弈论并不看重每次给你提供可以选择的数是什么,而重点在于你选择的方法和选择顺序或者选择次数等等的一些关系。
(感觉好高深的样子,因为上网查资料根本看不懂,也看不进去。。)
好,那么现在问题来了。这道题怎么A!
如果,我是wind(if),我每次选择当然要选择最大的,当然对方也一定。但因为n是偶数,(这点很重要!!)如果我输入的order是1的话,那么则是对方先取,那么可以把轮流的两次看成一组,则他都可以选择一个比我大的数,接着给我剩一个较小的数,因此,先手必胜。

#include<stdio.h>#include<string.h>#define MAXN 100000+100int k,n,order;int a[MAXN];int main(){    scanf("%d",&k);    while(k--)    {        scanf("%d%d",&n,&order);        /*for(int i=1;i<=n;i++)        {            scanf("%d",a+i);        }*/        scanf("%*c%*[^\n]");//这个够爽了哈,直接跳过一行,不读了~        if(order==1)        {            printf("lolanv\n");        }        else printf("wind\n");    }}

博弈论还是很高深的,具体有什么巴什博弈,威佐夫博弈,尼姆博弈,SG函数等等。

而这里只是作为一个小引而已。

有兴趣的可以看看:

  1. POJ2234 Matches Game
  2. POJ1704
    (To be continued…)
0 0