zoukankan      html  css  js  c++  java
  • Luogu P1290 欧几里得的游戏/UVA10368 Euclid's Game

    Luogu P1290 欧几里得的游戏/UVA10368 Euclid's Game

    对于博弈论的题目没接触过多少,而这道又是比较经典的SG博弈,所以就只能自己来推关系……
    假设我们有两个数$m,n$,我们先把$m$设为较大值,$n$设为较小值。现在我们把它分成三种情况:
    1.若两数为倍数关系,当前操作的一方赢。
    2.若$m div n>1$,那么还是操作一方赢。
    为什么呢?
    拿$(25,7)$来举例。这时的操作方就有三种选择:$(8,7)$,$(11,7)$,$(4,7)$,
    如果他选$(18,7)$,那后者就面对的是$(11,7)$或$(4,7)$;而如果他不选$(18,7)$,那么他面对的还是$(11,7)$或$(4,7)$。
    此时我们会发现,$(11,7)$和$(4,7)$是必有一个能赢的,而两人都会选择最优策略,所以谁有选择权谁就能赢,也就是说他不能选$(18,7)$。
    所以易知,谁有选择权谁就能赢。
    3.商为$1$,则继续
    举个例子,如$(6,4)$,这时先手没有选择权,那就只能继续,如$(2,4)$。
    综上所述,那么代码也就很容易写了。
    (两道题的读入略微有些不同)

    Luogu P1290

    #include<bits/stdc++.h>
    
    using namespace std;
    
    int c,m,n;
    
    bool Judge(int m,int n) {
    	int p=0;
    	while(1) {
    		p++;
    		int mmax=max(m,n),mmin=min(m,n);
    		m=mmax;
    		n=mmin;
    		if(m%n==0||m/n>1) {
    			return p%2;
    		}
    		else {
    			m-=n;
    		}
    	}
    }
    int main()
    {
    	scanf("%d",&c);
    	for(int i=1;i<=c;i++) {
    		scanf("%d%d",&m,&n);
    		if(Judge(m,n)==1) {
    			printf("Stan wins
    ");
    		}
    		else {
    			printf("Ollie wins
    ");
    		}
    	}
    	return 0;
    }
    

    UVA10368

    #include<bits/stdc++.h>
    
    using namespace std;
    
    int c,m,n;
    
    bool Judge(int m,int n) {
    	int p=0;
    	while(1) {
    		p++;
    		int mmax=max(m,n),mmin=min(m,n);
    		m=mmax;
    		n=mmin;
    		if(m%n==0||m/n>1) {
    			return p%2;
    		}
    		else {
    			m-=n;
    		}
    	}
    }
    int main()
    {
    	while(scanf("%d%d",&m,&n)&&(m!=0&&n!=0)) {
    		if(Judge(m,n)==1) {
    			printf("Stan wins
    ");
    		}
    		else {
    			printf("Ollie wins
    ");
    		}
    	}
    	return 0;
    }
    
  • 相关阅读:
    burpsuite 关于部分https抓包失败原因
    记一次对汉明科技无线运营系统审计的过程
    nmap script 总结
    python argparse总结
    unix 密码破解,zip破解总结
    python 反向shell后门
    结构体的不完整声明
    [转载][来自csdn]RTS和CTS是什么意思?
    博客开通成功
    system系统调用返回值判断命令是否执行成功
  • 原文地址:https://www.cnblogs.com/luoshui-tianyi/p/11449572.html
Copyright © 2011-2022 走看看