点此看题面

大致题意: 给你一张\(n*m\)的棋盘,问你一匹马在两个点中是否存在一条经过黑白格子数目相等的路径。

简化题目

首先,我们来简化一下题目。

考虑到马每次走的时候,所经过的格子的颜色必然发生变化,因此黑白格子数目相等这个条件就变成了起点和终点颜色是否相同。

当颜色相同时,我们就可以直接输出\(No\)了。

而接下来的问题就变成了:一匹马是否能从一个点到达另一个点。

在此之前,我们先默认\(n\le m\)(不满足条件\(swap\)即可)。

当\(n=1\)时

此时,马完全无法移动,因此直接输出\(No\)。

当\(n=2\)时

此时,马每次必然只能从某一行跳至另外一行。

先考虑起点与终点在同一行的情况,这肯定是不合法的。

因为马每次会跳至另一行,所以需偶数次才能保持在同一行。

而这样一来起点与终点颜色必然一样,在前面就已经被判掉了,无须再讨论。

那么只需考虑起点与终点不在同一行的情况。

简单画图可得,若合法,则此时起点与终点纵坐标在模\(4\)之后差值绝对值必然为\(2\)。

因此,对于\(n=2\)的情况,判断起点与终点纵坐标在模\(4\)之后差值绝对值是否为\(2\)即可得出答案。

当\(n=m=3\)时

通过简单画图,可以发现,周围一圈的马,无论如何都跳不到中间\((2,2)\)这一格子上。

同理,\((2,2)\)这一格子上的马也跳不到周围一圈的格子上。

所以,只需判断起点与终点是否存在某一个为\((2,2)\)即可。

其余情况

必定有解,输出\(Yes\)。

代码

#include<bits/stdc++.h>
#define Tp template<typename Ty>
#define Ts template<typename Ty,typename... Ar>
#define Reg register
#define RI Reg int
#define Con const
#define CI Con int&
#define I inline
#define W while
#define swap(x,y) (x^=y^=x^=y)
#define abs(x) ((x)<0?-(x):(x))
using namespace std;
int n,m,sx,sy,ex,ey;
int main()
{
if(scanf("%d%d%d%d%d%d",&n,&m,&sx,&sy,&ex,&ey),((sx^sy)&1)==((ex^ey)&1)) return puts("No"),0;//若同色,输出No
if(n>m&&(swap(n,m),swap(sx,sy),swap(ex,ey)),n==1) return puts("No"),0;//若n=1,输出No
if(n==2&&abs(sy%4-ey%4)^2) return puts("No"),0;//若起点与终点纵坐标差值的绝对值在模4之后不为2,输出No
if(n==3&&m==3&&((sx==2&&sy==2)||(ex==2&&ey==2))) return puts("No"),0;//若n=m=3且起点与终点存在某一个为(2,2),输出No
return puts("Yes"),0;//其余情况输出Yes
}

【CCPC-Wannafly Winter Camp Day4 (Div1) F】小小马(分类讨论)的更多相关文章

  1. 2020 CCPC Wannafly Winter Camp Day1 C. 染色图

    2020 CCPC Wannafly Winter Camp Day1 C. 染色图 定义一张无向图 G=⟨V,E⟩ 是 k 可染色的当且仅当存在函数 f:V↦{1,2,⋯,k} 满足对于 G 中的任 ...

  2. 2020 CCPC Wannafly Winter Camp Day1 Div.1&amp F

    #include<bits/stdc++.h> #define forn(i, n) for (int i = 0; i < int(n); i++) #define fore(i, ...

  3. 【CCPC-Wannafly Winter Camp Day4 (Div1) G】置置置换(动态规划)

    点此看题面 大致题意: 求出有多少个长度为\(n\)的排列满足对于奇数位\(a_{i-1}<a_i\),对于偶数位\(a_{i-1}>a_i\). 考虑打表? 考虑每次只有一个数\(n\) ...

  4. 【CCPC-Wannafly Winter Camp Day4 (Div1) A】夺宝奇兵(水题)

    点此看题面 大致题意: 有\(n\)种宝藏,每种各两个.让你依次获得\(1\sim n\)号宝藏,然后依次获得剩余的\(n\sim1\)号宝藏,求最少步数. 简单结论 其实这题有一个十分简单的结论,即 ...

  5. 【CCPC-Wannafly Winter Camp Day4 (Div1) C】最小边覆盖(简单题)

    点此看题面 大致题意: 给你一个边集的子集,问你这可不可能是这张图的最小边覆盖. 大致思路 考虑到,如果一条边连接的两个点度数都大于等于\(2\),则这条边完全可以删去. 因此,我们只要判断是否存在这 ...

  6. 【CCPC-Wannafly Winter Camp Day4 (Div1) I】咆咆咆哮(三分+贪心)

    点此看题面 大致题意: 有\(n\)张卡牌,每张卡牌有两种用法:使场上增加一个伤害为\(a_i\)的生物,或使场上所有生物伤害增加\(b_i\).求最大总伤害. 三分 我们可以三分使用\(a_i\)的 ...

  7. 【CCPC-Wannafly Winter Camp Day4 (Div1) J】跑跑跑路(爬山)

    点此看题面 大致题意: 共两轮,每轮每人有一个标签,标签相同的人必须到同一个点集合.求所有人总路程的最小值. 爬山算法 这道题貌似有三种做法:模拟退火.高斯消元以及爬山算法. 相比之下,自然是爬山算法 ...

  8. CCPC Wannafly Winter Camp Div2 部分题解

    Day 1, Div 2, Prob. B - 吃豆豆 题目大意 wls有一个\(n\)行\(m\)列的棋盘,对于第\(i\)行第\(j\)列的格子,每过\(T[i][j]\)秒会在上面出现一个糖果, ...

  9. Wannafly Winter Camp Day8(Div1,onsite) E题 Souls-like Game 线段树 矩阵乘法

    目录 Catalog Solution: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 Catalog @ Problem:传送门  Portal  原题目描述在最下面.  简单的 ...

随机推荐

  1. Pycharm在线/手动离线安装第三方库-以scapy为例(本地离线添加已经安装的第三方库通过添加Path实现)

    在线安装运行Pycharm,打开需要添加scapy文件的项目,以TestScapy为例           点击工具栏的File选项,选中Settings,单击打开                  ...

  2. 7-----Scrapy框架中Download Middleware用法

    这篇文章中写了常用的下载中间件的用法和例子.Downloader Middleware处理的过程主要在调度器发送 requests请求的时候以及网页将 response结果返回给 spiders的时候 ...

  3. 转 Django中的Form

    https://www.cnblogs.com/chenchao1990/p/5284237.html Form 一.使用Form Django中的Form使用时一般有两种功能: 1.生成html标签 ...

  4. 解决WebStorm/PyCharm/IDEA卡顿的问题

    问题 webstorm强大的功能就不多做介绍了.但是它的缺点也显而易见:吃内存. 电脑配置稍低一点,运行webstorm就特别容易卡顿,特别是项目比较大的时候,那卡顿得不要不要的. 在我的PC机32g ...

  5. array.map

    定义和用法 map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值. map() 方法按照原始数组元素顺序依次处理元素. 注意: map() 不会对空数组进行检测. 注意: ma ...

  6. HBuilder的常用快捷键

    Ctrl + d 删除整行内容 Ctrl + Shift +R 复制当前行到下一行 Ctrl + Shift +D 重新编辑 Ctrl + 方向键 当前行整行内容上移或下移 Alt + ↓ 跳转到下一 ...

  7. [转]将input file的选择的文件清空

    本文转自:http://hi.baidu.com/xiongshihu/item/125c79b47632e794194697f5 上传文件时,选择了文件后想清空文件路径的两种办法: JS代码 < ...

  8. (转)轻松应对IDC机房带宽突然暴涨问题

    原文:http://blog.51cto.com/oldboy/909696

  9. 输入一个正整数n (1<n<=10),生成 1个 n*n 方阵 求出对角线之和

    #define _CRT_SECURE_NO_WARNINGS #include <Windows.h> #include <stdio.h> #include <std ...

  10. [PHP]AES加密----PHP服务端和Android客户端

    本文采取128位AES-CBC模式加密和解密 1.首先对服务端安装mcrypt: sudo apt-get install php5-mcrypt php5-dev sudo php5enmod mc ...