zoukankan      html  css  js  c++  java
  • 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

     

  • 相关阅读:
    几种 HtmlEncode 的区别
    Javascript 编程风格
    asp.net ckeditor 无法获取值
    Silverlight:Deep Zoom 文件格式概述
    js阻止浏览器的默认行为以及停止事件冒泡(用JQuery实现回车提交,兼容IE、FF浏览器)
    什么是 HTTP Headers?
    ServerVariables
    SQL Server 查询不重复id的数据记录
    因为安全原因,文件不可浏览. 请联系系统管理员并检查CKFinder配置文件
    浏览器鼠标手势原理简析
  • 原文地址:https://www.cnblogs.com/cjhahaha/p/3914534.html
Copyright © 2011-2022 走看看