【CCPC-Wannafly Winter Camp Day4 (Div1) F】小小马(分类讨论)
大致题意: 给你一张\(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】小小马(分类讨论)的更多相关文章
- 2020 CCPC Wannafly Winter Camp Day1 C. 染色图
2020 CCPC Wannafly Winter Camp Day1 C. 染色图 定义一张无向图 G=⟨V,E⟩ 是 k 可染色的当且仅当存在函数 f:V↦{1,2,⋯,k} 满足对于 G 中的任 ...
- 2020 CCPC Wannafly Winter Camp Day1 Div.1& F
#include<bits/stdc++.h> #define forn(i, n) for (int i = 0; i < int(n); i++) #define fore(i, ...
- 【CCPC-Wannafly Winter Camp Day4 (Div1) G】置置置换(动态规划)
点此看题面 大致题意: 求出有多少个长度为\(n\)的排列满足对于奇数位\(a_{i-1}<a_i\),对于偶数位\(a_{i-1}>a_i\). 考虑打表? 考虑每次只有一个数\(n\) ...
- 【CCPC-Wannafly Winter Camp Day4 (Div1) A】夺宝奇兵(水题)
点此看题面 大致题意: 有\(n\)种宝藏,每种各两个.让你依次获得\(1\sim n\)号宝藏,然后依次获得剩余的\(n\sim1\)号宝藏,求最少步数. 简单结论 其实这题有一个十分简单的结论,即 ...
- 【CCPC-Wannafly Winter Camp Day4 (Div1) C】最小边覆盖(简单题)
点此看题面 大致题意: 给你一个边集的子集,问你这可不可能是这张图的最小边覆盖. 大致思路 考虑到,如果一条边连接的两个点度数都大于等于\(2\),则这条边完全可以删去. 因此,我们只要判断是否存在这 ...
- 【CCPC-Wannafly Winter Camp Day4 (Div1) I】咆咆咆哮(三分+贪心)
点此看题面 大致题意: 有\(n\)张卡牌,每张卡牌有两种用法:使场上增加一个伤害为\(a_i\)的生物,或使场上所有生物伤害增加\(b_i\).求最大总伤害. 三分 我们可以三分使用\(a_i\)的 ...
- 【CCPC-Wannafly Winter Camp Day4 (Div1) J】跑跑跑路(爬山)
点此看题面 大致题意: 共两轮,每轮每人有一个标签,标签相同的人必须到同一个点集合.求所有人总路程的最小值. 爬山算法 这道题貌似有三种做法:模拟退火.高斯消元以及爬山算法. 相比之下,自然是爬山算法 ...
- CCPC Wannafly Winter Camp Div2 部分题解
Day 1, Div 2, Prob. B - 吃豆豆 题目大意 wls有一个\(n\)行\(m\)列的棋盘,对于第\(i\)行第\(j\)列的格子,每过\(T[i][j]\)秒会在上面出现一个糖果, ...
- Wannafly Winter Camp Day8(Div1,onsite) E题 Souls-like Game 线段树 矩阵乘法
目录 Catalog Solution: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 Catalog @ Problem:传送门 Portal 原题目描述在最下面. 简单的 ...
随机推荐
- 24-----BBS论坛
BBS论坛(二十四) 24.1.编辑板块 cms/js/banners.js $(function () { $('.edit-board-btn').click(function () { var ...
- java——红黑树 RBTree
对于完全随机的数据,普通的二分搜索树就很好用,只是在极端情况下会退化成链表. 对于查询较多的情况,avl树很好用. 红黑树牺牲了平衡性,但是它的统计性能更优(综合增删改查所有的操作). 红黑树java ...
- c++ 封装线程库 2
1.2线程回收: 首先得知道线程的两个状态: Joinable Detached 简单理解,如果一个线程是joinable的状态,那么这样的线程,就必须使用pthread_join来回收,否则程序结束 ...
- android Window(一)从setConetView说起
Activity的源码 首先从setContentView这里调用的mWindow的 setConetView() private Window mWindow; public void setCon ...
- 多线程编程_读写锁ReadWriteLock
Lock比传统线程模型中的synchronized方式更加面向对象,与生活中的锁类似,锁本身也应该是一个对象.两个线程执行的代码片段要实现同步互斥的效果,它们必须用同一个Lock对象. 读写锁:分为读 ...
- android 中百度地图 关于地图缩放所调用的事件
在做百度地图的时候 javascript 有个地图缩放的事件 但是在android 的API里面却没有,但是还好 官方给了一个MapStatusChangeListener,是这样介绍的 百度地图S ...
- stm32串口学习(二)
今天继续学习stm32的串口编程(利用库函数).上次我们说了串口的发送,这次我们说接收. 接收可以用查询的方法,也可以用中断.显然,工程中多用中断的方式,那么就来看看中断接收. 代码其实很简单,基本的 ...
- pat06-图5. 旅游规划(25)
06-图5. 旅游规划(25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该 ...
- for循环笔记
JS获取元素方法——ById和ByTagName方法的区别 1.通过id获取,前面就只能是document,不能是其他的,但是ByTagName前面可以是document,也可以跟一个别的元素 #li ...
- c# 截取picturebox部分图像
Bitmap bit = new Bitmap(renderImage.Width, renderImage.Height); using (Graphics g = Graphics.FromIma ...