• P1488 肥猫的游戏


    题目描述

    野猫与胖子,合起来简称肥猫,是一个班的同学,他们也都是数学高手,所以经常在一起讨论数学问题也就不足为奇了。一次,野猫遇到了一道有趣的几何游戏题目,便拿给胖子看。游戏要求在一个有n个顶点凸多边形上进行,这个凸多边形的n-3条对角线将多边形分成n-2个三角形,这n-3条对角线在多边形的顶点相交。三角形中的一个被染成黑色,其余是白色。双方轮流进行游戏,当轮到一方时,他必须沿着画好的对角线,从多边形上切下一个三角形。切下黑色三角形的一方获胜。胖子一看觉得确实很有趣,不如就一起玩玩吧。假设游戏由野猫先开始,那么野猫是否有必胜的策略呢?请写一个程序帮助野猫算一算。

    输入输出格式

    输入格式:

    第一行为一个整数n(4<=n<=50000),表示多边形的顶点数,多边形的顶点由0至n-1顺时针标号。接着的n-2行描述组成多边形的三角形。第i+1行(1<=i<=n-2)有三个空格分隔的非负整数a、b、c,它们是第i个三角形的顶点编号。第一个给出的三角形是黑色的。

    输出格式:

    只有一行,倘若野猫有必胜策略,输出JMcat Win;否则,输出PZ Win。(注意大小写和空格)

    输入输出样例

    输入样例#1:
    6
    0 1 2
    2 4 3
    4 2 0
    0 5 4
    
    输出样例#1:
    JMcat Win
    

    说明

    各个测试点1s

    如果连接一个多边形中任意两点的线段都完全包含于这个多边形,则称这个多边形为凸多边形。

    这题有bug啊,,

    5
    0 1 4
    1 2 3
    1 4 3

    题解里的程序跑出来的结果是不一样的

    而且我感觉自己写的对啊,,结果为啥70分,,,

     1 include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<cmath>
     5 #include<algorithm>
     6 using namespace std;
     7 int read(int & n)
     8 {
     9     char c='-';int x=0;
    10     while(c<'0'||c>'9')c=getchar();
    11     while(c>='0'&&c<='9')
    12     {
    13         x=x*10+(c-48);
    14         c=getchar();
    15     }
    16     n=x;
    17 }
    18 int n;
    19 int a[4];
    20 int main()
    21 {
    22     read(n);
    23     read(a[1]);read(a[2]);read(a[3]);
    24     sort(a+1,a+4);
    25     if(n%2==0)
    26         printf("JMcat Win");
    27     else if(((a[3]-a[2])==(a[2]-a[1])))
    28         printf("JMcat Win");
    29     else
    30         printf("PZ Win");
    31     return 0;
    32 }
    感觉写的对但是70分
     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<cmath>
     5 #include<algorithm>
     6 using namespace std;
     7 int read(int & n)
     8 {
     9     char c='-';int x=0;
    10     while(c<'0'||c>'9')c=getchar();
    11     while(c>='0'&&c<='9')
    12     {
    13         x=x*10+(c-48);
    14         c=getchar();
    15     }
    16     n=x;
    17 }
    18 int n;
    19 int a[4];
    20 int main()
    21 {
    22     read(n);
    23     read(a[1]);read(a[2]);read(a[3]);
    24     sort(a+1,a+4);
    25     if(n%2==0)
    26         printf("JMcat Win");
    27     else 
    28     {
    29         int count = 0;
    30         if (abs(a[1]-a[2])==1) count++;
    31         if (abs(a[1]-a[3])==1) count++;
    32         if (abs(a[2]-a[3])==1) count++;
    33         if (count==2) 
    34         cout<<"JMcat Win
    ";
    35         else
    36         printf("PZ Win");
    37     }
    38     
    39     return 0;
    40 }
  • 相关阅读:
    【转】《基于MFC的OpenGL编程》Part 5 Transformations Rotations, Translations and Scaling
    【转】 《基于MFC的OpenGL编程》Part 10 Texture Mapping
    【转】 《基于MFC的OpenGL编程》Part 11 Blending, Antialiasing and Fog
    win form 托盘功能的实现(引用CSDN)
    C# win form退出窗体时对话框实用
    智能DNS 笔记
    iis无法启动, 找出占用80端口的罪魁祸首
    gvim for windows的剪贴板操作
    内容交换
    Content Networking 读书笔记
  • 原文地址:https://www.cnblogs.com/zwfymqz/p/7028053.html
Copyright © 2020-2023  润新知