zoukankan      html  css  js  c++  java
  • 2017广东工业大学程序设竞赛B题占点游戏

    Description

    众所周知的是,TMK特别容易迟到,终于在TMK某次又迟到了之后,Maple怒了,Maple大喊一声:“我要跟你决一死战!”然后Maple就跟TMK玩起了一个关于占点的游戏。

    Maple在一个无限展开的只有整数点的二维平面上找到两个点,由TMKMaple分别操控这两个点,两人轮流操作,每一次操作中TMKMaple可以把他的点移动一格到上、下、左、右四个方向,当TMK操作时,移动到的这个点会被染成红色,而当Maple操作时,移动到的这个点会被染成蓝色,需要注意的是,两个起始时的两个点也都会被染上相应的颜色,而当任一人走到已经染了不同颜色的点,这个颜色会被覆盖掉,当两个点覆盖在一起时,这个点会被后来的点染色。当游戏结束时染着自己颜色的点就代表被自己占领了。

    TMK一下就明白了,这个游戏的目标是让自己占领的点比对方占领的点多,而且要让差值最大。

    为了公平一些,Maple决定让TMK来选择先手或后手和让TMK来选择点,相应的Maple就会选择另一个点。

    现在给出游戏的总轮数NMaple选择的两个点的坐标(x1y1),(x2y2),要TMK来选择先后手和起始点,假设Maple一定按最优策略来走,问TMK能不能选择先后手和起始点使得自己占领的点比Maple占领的多,如果能,那么同时要求出占领的点数的最大差值。

    Input

    第一行一个T,代表接下来有T组数据(1<=T<=2000)

    每组数据有五个整数N,x1,y1,x2,y2,代表了操作的总轮数N以及选择的两个起始点(x1,y1),(x2,y2),其中1<=N<=10^8,-10^8<=x1,y1,x2,y2<=10^8,数据保证两个点不相同。

    Output

    对于每一组数据,如果TMK占领的点不能比Maple占领的多,那么输出-1,否则输出两个占领点数的最大差值。

    Sample Input

    4
    1 0 0 1 0
    2 0 0 1 0
    1 0 0 2 0
    2 0 0 2 0

    Sample Output

    2
    -1
    1
    -1

    HINT

    考虑一个点能不能走到另一个点 
    如果能走到 


    —如果距离是奇数 
    ——如果n是奇数 那么先手多2 
    ——如果n是偶数 那么-1 


    —如果距离是偶数 
    ——如果n是奇数 先手多1 
    ——如果n是偶数 后手多1 


    不能走到 


    —如果n是奇数 先手多1 
    —如果n是偶数 -1

    AC代码

     1 #include<stdio.h>
     2 #include<math.h>
     3 int main()
     4 {
     5     int T,n,x1,x2,y1,y2;
     6     int dis;
     7     scanf("%d",&T);
     8     while(T--)
     9     {
    10         scanf("%d %d %d %d %d",&n,&x1,&y1,&x2,&y2);
    11         dis=fabs(x1-x2)+fabs(y1-y2);
    12         if((n+1)/2>=dis)
    13         {
    14             if(dis%2==1)
    15             {
    16                 if(n%2==1)
    17                     printf("2
    ");
    18                 else
    19                     printf("-1
    ");
    20             }
    21             else
    22             {
    23                 printf("1
    ");
    24             }
    25         }
    26         else
    27         {
    28             if(n%2==1)
    29                 printf("1
    ");
    30             else
    31                 printf("-1
    ");
    32         }
    33     }
    34     return 0;
    35 }
  • 相关阅读:
    管理博文 Web开发教程:Kendo UI for jQuery数据管理——列模板
    WPF界面开发新纪元——Diagram/Gantt控件升级
    Winform界面开发:WinForms应用程序中的MDI、SDI和MFI接口类型
    依赖注入[2]: 基于IoC的设计模式
    依赖注入[1]: 控制反转
    OAuth2.0的理解&基础
    开放平台鉴权以及OAuth2.0介绍
    OAuth2.0 知多少
    理解OAuth 2.0
    微服务架构介绍及开源框架
  • 原文地址:https://www.cnblogs.com/stranger-/p/6641804.html
Copyright © 2011-2022 走看看