【结论】棋盘(jzoj 2297)
生活随笔
收集整理的這篇文章主要介紹了
【结论】棋盘(jzoj 2297)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
棋盤
jzoj 2297
題目大意:
在棋盤上有一個(gè)特殊的象,他可以向四個(gè)方向行走若干步(左上,左下,右上,右下),現(xiàn)在問從某一個(gè)點(diǎn)是否能到另外一個(gè)點(diǎn)
輸入樣例
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數(shù)據(jù)范圍
對(duì)于30%的數(shù)據(jù),0<T<=5,0<x,y,u,v<=4
對(duì)于50%的數(shù)據(jù),0<T<=10,0<x,y,u,v<=500
對(duì)于100%的數(shù)據(jù),0<T<=100,0<x,y,u,v<=10^8
解題思路:
我們可以先畫一個(gè)圖(如下圖),初始位置是藍(lán)色格子,我們?nèi)绻惶艟嚯x為1的就只可以跳到紅色部分,如果距離更大,那結(jié)果也是不會(huì)變的,因?yàn)榫嚯x1可以合成其他的距離,所以我們只能跳到下圖的紅色部分,我們觀察一下,可以發(fā)現(xiàn)x坐標(biāo)之間的距離的奇偶性和y坐標(biāo)之間的距離的奇偶性是一樣的,如(3,3)可以到(4,6)(距離都是奇數(shù))(3,5)(距離都是偶數(shù))
代碼:
#include<cstdio> #define abs(a) (a)<0?-(a):(a) using namespace std; int t,x,y,u,v,s1,s2; int main() {scanf("%d",&t);while(t--){scanf("%d %d %d %d",&x,&y,&u,&v);s1=abs(x-u);//x坐標(biāo)的距離s2=abs(y-v);//y坐標(biāo)的距離if ((s1&1)==(s2&1)) printf("Yes\n");//判斷奇偶性else printf("No\n");} }總結(jié)
以上是生活随笔為你收集整理的【结论】棋盘(jzoj 2297)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: biblatex中如何修改参考文献中日期
- 下一篇: 城市文化笔记整理(二)