147. Black-white king

time limit per test: 0.25 sec.
memory limit per test: 4096 KB
input: standard input
output: standard output
On the chessboard of size NxN leaves only three figures. They are black king, white king and black-white king. The black-white king is very unusual chess piece for us, because it is invisible. Black and white kings decided to conclude a treaty against black-white king (they don't see it, but know that it is somewhere near at chessboard). To realize there plans black and white must meet face to face, what means that they must occupy two neighboring cells (generally each cell has 8 neighbors). The black-white king wants to prevent them from meeting. To do this he must intercept one of the kings before they'll meet, that is to attack one of the kings (make a move to it's cell). If the opponent will make a move on the cell of black-white king, nothing will happen (nobody kill anybody). Your task is to find out have the black-white king chances to win or not. Consider that white and black kings choose the one of the shortest ways to meet. Remember, that they don't see the black-white king. The black-white king also has a strategy: he moves in such a way, that none of the parts of his way can be shortened (for example, he cannot move by zigzag). 
In the case of positive answer (i.e. if the probability of black-white king to win is nonzero) find the minimal number of moves necessary to probable victory. Otherwise find the minimal total number of moves of black and white kings necessary to meet. Remember the order of moves: white king, black king, and black-white king. Any king can move to any of the 8 adjacent cells.
Input
First line of input data contains the natural number N (2<=N<=10^6). The second line contains two natural numbers P1, Q1 (0<P1,Q1<N+1) - coordinates of black king, third line contains P2, Q2 (0<P2,Q2<N+1) - coordinates of white king, forth line contains P3, Q3 (0<P3,Q3<N+1) - coordinates of black-white king. Positions of all kings are different.
Output
Write to the first line word "YES" if the answer id positive, and "NO" - otherwise. To the second line write a single number - the numerical answer to the task.
Sample test(s)
Input
 
 

1 1 
5 3 
2 3
 
 
Output
 
 
YES 
1

这道题看起来很像水题,解起来很像水题,但是有两点 1 黑白王的最短路是指步数最短不是指单纯的路程最短 2 一开始就在一个格子上则yes,0

其中第一点很坑,即使经过队友开导我现在也抱着这是坑题和题意不明的心态

注意黑白王的运动状态可能是以初始点为中心,2*步数+1为正方形边长的空心正方形

这里有几组测试数据,直接找个ac程序对拍吧,比如我写在下面的

10
1 10
1 1
5 5

5
1 1
5 3
2 3

10
1 1
5 5
3 3

5
10 10
5 5
3 4

3
1 1
2 2
3 3

200
1 1
20 100
25 17

500
1 1
200 200
100 100

10
1 1
4 3
2 5

100
10 40
40 30
25 25

21
1 10
21 10
1 5

25
1 10
21 10
21 1

4
3 1
1 2
1 2

66
4 57
31 35
17 38

#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
int n,p1,q1,p2,q2,p3,q3;
bool ins(int x,int y1,int y2,int x3,int x4,int y3,int y4){
// printf("x %d y1 %d y2 %d x3 %d y3 %d x4 %d y4 %d\n",x,y1,y2,x3,y3,x4,y4);
if(x<=x4&&x>=x3&&((y1<=y3&&y2>=y3)||(y1<=y4&&y2>=y4)))return true;
if(x==x3||x==x4){
if(max(y1,y3)<=min(y2,y4))return true;
}
return false;
}
int pos(int x){
if(x<1)return 1;
if(x>n)return n;
return x;
}
int calc(){
int sumstep=abs(p1-p2);
int maxstep=abs(p1-p2)/2-1;
if(maxstep<=0)return -1;
int x1=p2==p1?0:(p2-p1)/abs(p2-p1);
int xx,ymax,ymin;
for(int i=1;i<=maxstep;i++){
// printf("%d:\n%d %d %d %d\n",i,pos(q1-i),pos(q1+i),pos(q2-sumstep+i),pos(q2+sumstep-i));
xx=p1+x1*i;
ymin=max(pos(q1-i),pos(q2-sumstep+i));
ymax=min(pos(q1+i),pos(q2+sumstep-i));
if(ins(xx,ymin,ymax,p3-i,p3+i,q3-i,q3+i))return i;
xx=p2-x1*i;
ymin=max(pos(q2-i),pos(q1-sumstep+i));
ymax=min(pos(q2+i),pos(q1+sumstep-i));
if(ins(xx,ymin,ymax,p3-i,p3+i,q3-i,q3+i))return i; }
return -1;
}
int main(){
//freopen("data.txt","w",stdout);
scanf("%d%d%d%d%d%d%d",&n,&p1,&q1,&p2,&q2,&p3,&q3);
if((p1==p3&&q1==q3)||(p2==p3&&q2==q3)){puts("YES\n0");return 0;}
if(abs(p1-p2)<abs(q1-q2)){
swap(p1,q1);swap(p2,q2);swap(p3,q3);
}
int ans=calc();
if(ans==-1)printf("NO\n%d\n",abs(p1-p2)-1);
else {
printf("YES\n%d\n",ans);
}
return 0;
}

  

 
 

sgu 147. Black-white king 思路 坑 难度:1的更多相关文章

  1. SGU 156 Strange Graph 欧拉回路,思路,汉密尔顿回路 难度:3

    http://acm.sgu.ru/problem.php?contest=0&problem=156 这道题有两种点 1. 度数>2 在团中的点,一定连接一个度数为2的点 2. 度数等 ...

  2. SGU 147.Black-white king

    时间限制:0.25s 空间限制:4M 题意: 在一个N*N(N <= 106)的棋盘上,有三个棋子:黑王.白王.黑白王,它们的行走方式一致,每秒向8个方向中的任意一个行走一步. 现在黑王和白王想 ...

  3. sgu 129 Inheritance 凸包,线段交点,计算几何 难度:2

    129. Inheritance time limit per test: 0.25 sec. memory limit per test: 4096 KB The old King decided ...

  4. HDU 4791 Alice's Print Service 思路,dp 难度:2

    A - Alice's Print Service Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & ...

  5. sgu 146. The Runner 取模技巧 难度:1

    146. The Runner time limit per test: 0.25 sec.memory limit per test: 4096 KB input: standard inputou ...

  6. SGU 144. Meeting 概率dp 几何概率分布 难度:0

    144. Meeting time limit per test: 0.25 sec. memory limit per test: 4096 KB Two of the three members ...

  7. ZOJ 3646 Matrix Transformer 二分匹配,思路,经典 难度:2

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4836 因为要使对角线所有元素都是U,所以需要保证每行都有一个不同的列上有U,设 ...

  8. GCJ 2015-Qualification-B Infinite House of Pancakes 枚举,思路,误区 难度:3

    https://code.google.com/codejam/contest/6224486/dashboard#s=p1 题目不难,教训记终生 题目给了我们两种操作:1 所有人都吃一个,简记为消除 ...

  9. SGU 246. Black & White(数论)

    题意: 有2*n-1个黑色和白色的珠子组成的环形项链,求至少需要多少颗黑色珠子才能使任意排列的项链中都存在两个黑珠间有n个珠子. (2*n-1<=2^31-1); Solution: 先分析n= ...

随机推荐

  1. Git学习-->GitLab如何修改时区?

    一.背景 今天有同事在GitLab上查看时间的时候,发现GitLab上显示的时间和提交的时间不一致. 本地时间现在为:2017-11-28 11:43 查看本地代码提交的时间为:2017-11-28 ...

  2. 给所有开发者的React Native详细入门指南

    建议先下载好资料后,再阅读本文.demo代码和资料下载 目录 一.前言 二.回答一些问题 1.为什么写此教程 2.本文适合哪些人看 3.如何使用本教程 4.需要先学习JavaScript.HTML.C ...

  3. Flume+Morphlines实现数据的实时ETL

    转载:http://mp.weixin.qq.com/s/xCSdkQo1XMQwU91lch29Uw Apache Flume介绍: Apache Flume是一个Apache的开源项目,是一个分布 ...

  4. Python---2. 函数

    转载: Py西游攻关之函数 补充: map函数和reduce函数的区别

  5. 模块讲解----反射 (基于web路由的反射)

    一.反射的实际案例: def main(): menu = ''' 1.账户信息 2.还款 3.取款 4.转账 5.账单 ''' menu_dic = { ':account_info, ':repa ...

  6. 为什么要同时重写equals和hashcode

    原文地址https://blog.csdn.net/tiantiandjava/article/details/46988461 原文地址https://blog.csdn.net/lijiecao0 ...

  7. 本地blast的安装

    1 下载程序 在ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/LATEST/下载 ncbi-blast-2.2.25+-x64-linux.t ...

  8. MOPSO 多目标粒子群优化算法

    近年来,基于启发式的多目标优化技术得到了很大的发展,研究表明该技术比经典方法更实用和高效.有代表性的多目标优化算法主要有NSGA.NSGA-II.SPEA.SPEA2.PAES和PESA等.粒子群优化 ...

  9. open-falcon api相关

    本文描述通过被监控endpoint的名称获取该endpoint的eid和监控项,从而获取到该endpoint的监控历史数据,使用python代码的 api操作方法 注:同步open-falcon和ag ...

  10. P1351 联合权值(树形dp)

    P1351 联合权值 想刷道水题还交了3次.....丢人 (1.没想到有两个点都是儿子的状况 2.到处乱%(大雾)) 先dfs一遍处理出父亲$fa[x]$ 蓝后再一遍dfs,搞搞就出来了. #incl ...