zoukankan      html  css  js  c++  java
  • 普及C组第一题(8.9)

    2297. 【noip普及组2(放到第一题)】棋盘 (好像重名了)
    (File IO): input:chess.in output:chess.out

    题目描述

    众所周知,国际象棋的棋盘是一个网格。国际象棋中有一种旗子叫象。象每次移动可以斜着走任意格。即假设一只象在网格(x,y),每次移动可以选择一个正整数k,使象移到(x-k,y-k),(x-k,y+k),(x+k,y-k),(x+k,y+k)中的一个格子。
    现有若干组询问,每组询问给出两个格子(x,y),(u,v),你需要回答一只象如果初始时在(x,y),能否通过若干步(可以不走)到达(u,v)。
     

    输入

    第一行一个正整数T,表示询问数量。
    接下来T行,每行四个正整数x,y,u,v,表示一组询问。

    输出

    T行,每行一个”Yes”或”No”(不含引号),表示你的回答。
     

    样例输入

    5
    1 1 2 2
    2 3 2 2
    1 2 4 3
    3 4 2 2
    1 1 1 1

    样例输出

    Yes
    No
    Yes
    No
    Yes
     

    数据范围限制

    对于30%的数据,0<T<=5,0<x,y,u,v<=4
    对于50%的数据,0<T<=10,0<x,y,u,v<=500
    对于100%的数据,0<T<=100,0<x,y,u,v<=10^8

    先上代码:

    #include<iostream>
    #include<cmath>
    #include<cstdio>
    using namespace std;
    int n,x,y,u,v;
    bool dfs(int ,int ,int ,int  );
    int main()
    {
        //freopen("chess.in","r",stdin);
        //freopen("chess.out","w",stdout);
        cin>>n;
        for(int i=1;i<=n;i++)
        {
            cin>>x>>y>>u>>v;
            if(dfs(x,y,u,v))
            cout<<"Yes"<<endl;
            else
            cout<<"No"<<endl;
        }
        return 0;
    }
    bool dfs(int a,int b,int c,int d)
    {
        if(a==b&&c==d)
        return true;
        if(a==c&&abs(b-d)%2==0)
        return true;
        if(b==d&&abs(a-c)%2==0)
        return true;
        if((abs(a-c)%2)==(abs(b-d)%2))
        return true;
        return false;
    }

    思路:

    这道题很像深搜对不对,我已开始也是这么想的,结果你迎来的是一个10的八次方的数据。唉!结果你又画了章图,随便标了标,发现惊天大秘密,不用深搜。几个IF语句就能结束。真当你急忙码上去时,你发现有几个是无用的,啊哈哈哈。多有趣的一道题。

    完结撒花!!!

  • 相关阅读:
    mass Framework spec模块 v2
    素数判断算法(高效率)
    修改Win7远程桌面端口【适用XP/2003】
    一步一步写算法(之hash表)
    DropdownList绑定的两种方法
    JDK1.5官方下载_JDK5官方下载_JDK1.5API(chm)下载_JDK5APICHM中文参考下载_JDK1.5下载_JDK5下载
    HTTPS 方式访问网站
    薏米红豆粥功效及做法介绍
    教你用笔记本破解无线路由器密码
    HTTPS那些事(一)HTTPS原理
  • 原文地址:https://www.cnblogs.com/YYCether666/p/11327832.html
Copyright © 2011-2022 走看看