TYVJ博弈论

一些比较水的博弈论...(为什么都没有用到那什么SG呢....)

TYVJ 1140  飘飘乎居士拯救MM

题解:

  歌德巴赫猜想

 1 #include <cmath>
 2 #include <cstdio>
 3
 4 int n, a, b, ta, tb;
 5
 6 inline bool isPrime(int x){
 7     if (x==1) return true;
 8     for (int i=2; i<=sqrt(x); i++)
 9         if (!(x%i)) return false;
10     return true;
11 }
12
13 inline int getTime(int x){
14     if (isPrime(x)) return 1;
15     if (isPrime(x-1)) return 2;
16     if (x&1 && isPrime(x-2)) return 2;
17     return x&1 ? 3 : 2;
18 }
19
20 inline bool work(){
21     scanf("%d %d", &a, &b);
22     ta = b>a ? 1 : 0;
23     ta += getTime(a), tb = getTime(b);
24     return ta<=tb;
25 }
26
27 int main(){
28     scanf("%d", &n);
29     while (n--)
30         if (work()) puts("YES");
31         else puts("NO");
32 }

TYVJ 1140

TYVJ 1420  红豆子和绿豆子

题解:

  看完题后发现判断绿豆的奇偶就行了

  开始有个点WA了看了下数据遭吓到了...数据范围都不告诉简直坑

 1 #include <cstdio>
 2 #define isDig (48<=c&&c<=57)
 3
 4 char c;
 5 bool cj;
 6
 7 int main(){
 8     do
 9         c = getchar();
10     while (isDig);
11
12     do
13         c = getchar();
14     while (!isDig);
15
16     do {
17         if (isDig) cj = (c-48)&1;
18         c = getchar();
19     } while (isDig);
20
21     puts(cj ? "Yes" : "No");
22 }

TYVJ 1420

TYVJ 1567  吃糖果游戏

题解: 

  数学归纳法:借用题解里的话

    设a=[2,3,7,8]
    设b=[1,4,5,6,9,10]
    如果两个数都可写为10i+a的形式,设吃掉了第一个数,留下的第二个数10i+a,这时你无论怎么分,分出来的两个数一定有一个属于10i+b的形式。
    而我们发现每个b都能写成两个a的形式。

    因此如果两个数都是10i+a的形式,经过一轮之后回到手里的还是10i+a,所以必败。
    但如果两个数中有一个数不是10i+a,这时可以把另外一个吃掉,然后把这个数分成两个10i+a,这时对方必败。

 1 #include <cstdio>
 2 #include <cstring>
 3 #define isDig (48<=c&&c<=57)
 4 #define win (c-48==2||c-48==3||c-48==7||c-48==8)
 5
 6 char c;
 7 bool cj, anna;
 8
 9 inline void work(){
10     do
11         c = getchar();
12     while (!isDig);
13
14     do {
15         if (isDig) cj = win;
16         c = getchar();
17     } while (isDig);
18
19
20     do
21         c = getchar();
22     while (!isDig);
23
24     do {
25         if (isDig) anna = win;
26         c = getchar();
27     } while (isDig);
28
29     puts(cj&&anna ? "Shadow" : "Matrix67");
30 }
31
32 int main(){
33     for (int i=0; i<10; i++)
34         work();
35 }

TYVJ 1567

TYVJ博弈论

时间: 2024-10-14 13:41:32

TYVJ博弈论的相关文章

TYVJ 2049 魔法珠 sg函数

题意:链接 方法:sg函数 解析: tyvj的题大部分都没题解啊- - 不过这样貌似会更好?感觉做这的题都需要自己动脑啊- - 虽然嘴上说着好烦然而心里觉得好评? 回归正题 设sg[x]表示数x的sg值,这好像是废话 然后对于读入的a[i],将所有的a[i]的sg值异或起来如果不是零则先手赢反之后手 维护的时候有个坑. 每次求约数的时候,数组要在sg里开,因为如果递归下去的话,全局变量的话会被更改,会被坑死. 然后就是怎么维护了 对于x,先求约数 之后枚举哪个数不取,将其他的异或(或者先都异或起

hdu 1536 S-Nim 博弈论,,求出SG&#39;函数就可以解决

S-Nim Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 4975    Accepted Submission(s): 2141 Problem Description Arthur and his sister Caroll have been playing a game called Nim for some time now

bzoj 3224: Tyvj 1728 普通平衡树.

3224: Tyvj 1728 普通平衡树 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 15114  Solved: 6570[Submit][Status][Discuss] Description 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:1. 插入x数2. 删除x数(若有多个相同的数,因只删除一个)3. 查询x数的排名(若有多个相同的数,因输出最小的排名)4. 查询排名为x的数5. 求x的前驱(前驱定义为

Bzoj3196 Tyvj 1730 二逼平衡树

Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 3350  Solved: 1324 Description 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:1.查询k在区间内的排名2.查询区间内排名为k的值3.修改某一位值上的数值4.查询k在区间内的前驱(前驱定义为小于x,且最大的数)5.查询k在区间内的后继(后继定义为大于x,且最小的数) Input 第一行两个数 n,m 表示长度为n的有序序列和m个操作第二行

3223: Tyvj 1729 文艺平衡树

3223: Tyvj 1729 文艺平衡树 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 3473  Solved: 1962[Submit][Status][Discuss] Description 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 2 3 4 1 Input 第一行为n,m n表示初始序列有n个数,这个序列依次

UVA 10561 Treblecross(博弈论)

题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=32209 [思路] 博弈论. 根据X分布划分禁区,每个可以放置的块为单独一个游戏.按长度定义状态,构造sg函数.依次试验每一种放法. [代码] 1 #include<cstdio> 2 #include<vector> 3 #include<cstring> 4 #include<algorithm> 5 using names

博弈论的学习之始

今天看了耶鲁大学关于<博弈论>的公开课视频.于是想记录下关于博弈论的学习经历.最近赶上期末,事情超多,唉!不定期观看并记录吧! 视频中没有给出博弈论的具体定义,就不记录了吧!英文名Game Theory. 教授推荐课程书籍:杜塔 <策略与博弈>(课程基础书籍).乔治·沃森<策略>(教授说偏难!).<战略思想>(没看到具体谁的,教授说用来催眠不错!) 第一节课主要讲了博弈的几个原则. 1.不要选严格劣势策略: 2.理性选择造成次优选择: 3.要会换位思考: 4

hdu1856 Brave Game(博弈论)

应该是最基础的那种博弈论的题 (m+1)+多余 == n 如果没有多余,那么就后手赢了 #include<cstdio> int main() { int n; scanf("%d",&n); while(n--){ int x,p; scanf("%d%d",&x,&p); if(x%(p+1)==0 ) printf("second\n"); else printf("first\n")

Part.4【博弈论】

---恢复内容开始--- 不要问我为什么突然跳到Part.4,我懒得解释. 在蔡大神的论文+讲解和HZW的题库下,自己大概是明白什么是博弈论的皮毛了吧. 先说SG定理吧. 对于游戏中的状态,我们给每个状态定义一个必胜态和必败态.区别在于前者可以通过一次操作到达必败态,但后者无法做到(后者在一次操作后所能到达的状态全部都为必胜态) 接着引进SG函数,每个状态都有一个SG值,这个值由它所能到达的状态的SG值决定.(这里的所能到达的状态指的是经过一次操作能到达的状态,下同) SG值有以下性质: SG值