zoukankan      html  css  js  c++  java
  • 【NOIP 模拟赛】 道路


    题目描述
    在二维坐标平面里有 N 个整数点,信息班某一巨佬要访问这 N 个点。刚开始巨佬在点(0,0)处。 每一步,巨佬可以走到上、下、左、右四个点。即假设巨佬当前所在点的坐标是(x,y),那么它下一步可以移动到(x,y+1), (x,y-1), (x+1,y),(x-1,y)之一。
    巨佬目标是找到一个移动序列,满足下面的条件:
    1、从点(0,0)出发。
    2、对于给定的那 N 个点,每个点至少被访问一次。
    3、可以选择那 N 个给定点中任意一个作为结束点。
    现在为了增加难度,巨佬的教练规定巨佬走过的所有步数之和的奇偶性必须为wantedParity,显然 wantedParity 是 0 或 1,是题目给定的, 0 表示偶, 1 表示奇。不过这依然难不到巨佬,但是............
    巨佬临时有事,但是 ta 又不想受教练的批评,所以巨佬向你发出了求助(并且你不可拒绝)如果存在满足条件的移动序列,那么输出 CAN,否则输出 CANNOT。
    多组测试数据。
    第一行,一个整数 g,表示有 g 组测试数据,1 <= g <= 50。
    输入格式
    第 1 行,N、wantedParity。 1 <= N <= 3000。
    接下来有 N 行,每行两个整数:x, y,表示第 i 个点的坐标值。
    范围都在【-1000000,1000000】。输入的 N 个点不会有重叠,且不会有(0,
    0)点。
    输出格式
    共 g 行,每行输出 CAN 或 CANNOT。
    样例输入
    5
    40
    -1 -1
    -1 1
    11
    1 -1
    31
    -5 2
    -3 0
    23
    21
    1001 0
    -4000 0
    30
    11 -20
    21 42
    07
    21
    0 10
    6 -20
    样例输出
    CAN
    CAN
    CAN
    CANNOT
    CANNOT

    Solution:

      这个题目一眼看上去很吊,还被大佬们故意放在最后一题,但是细想还是不难的

      首先我们可以发现,一个点到另一个点的路径的奇偶性是不变的,如果不知道为什么的话,有一个快速的方法:如果它的奇偶性是可以改变的,那么答案肯定是CAN,因为只要任意改变一条路径的奇偶性就可以改变整条路的奇偶性,所以不会出现CANNOT的情况,这样一想,两点之间的路径的奇偶性一定是不会改变的。

      想到这一点,这个题目就很好做了,起点是(0,0),终点是n个点中任意一个,而两点之间路径的奇偶性又是确定的,所以判断(0,0)和n个点中每个点的距离的奇偶性,就可以知道有没有一条在n个点中结束的路径的长度的奇偶性与给出的wantedParity相同,然后这就是一个大水题了

    贴代码:

    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
        int T;
        bool flag;
        cin>>T;
        for(int i=1;i<=T;i++)
        {
            flag=0;
            int n,k;
            cin>>n>>k;
            for(int j=1;j<=n;j++)
            {
                int x,y;
                scanf("%d%d",&x,&y);
                if(flag==0)
                    if((abs(x)+abs(y))%2==k) {flag=1; cout<<"CAN"<<endl;}
            }
            if(flag==0) cout<<"CANNOT"<<endl;
        }
        return 0;
    }
  • 相关阅读:
    channel 功能解析
    Docker 使用 Jenkins 镜像创建容器(转)
    使用Gson将Object转String出现u003d 的原因
    Gradle基础
    JAVA HashMap 和 HashSet 的区别
    ViewStub基本用法
    String类的内存分配
    区块链--资产数字化之路
    选择排序
    冒泡排序
  • 原文地址:https://www.cnblogs.com/Le-mon/p/8469479.html
Copyright © 2011-2022 走看看