AtCoder Beginner Contest 086 C - Traveling

C - Traveling


Time limit : 2sec / Memory limit : 256MB

Score : 300 points

Problem Statement

AtCoDeer the deer is going on a trip in a two-dimensional plane. In his plan, he will depart from point (0,0) at time 0, then for each i between 1 and N (inclusive), he will visit point (xi,yi) at time ti.

If AtCoDeer is at point (x,y) at time t, he can be at one of the following points at time t+1(x+1, y ) ( x1, y ) ( x , y+1) and (x,y1). Note that he cannot stay at his place. Determine whether he can carry out his plan.

Constraints

  • 1  N  105
  • 0  xi  105
  • 0  yi  105
  • 1  ti  105
  • t i  <  t i+1 (1  i  N1)
  • All input values are integers.

Input

Input is given from Standard Input in the following format:

N 
t 1  x 1  y 1 
t 2  x 2  y 2
 : 
t N  x N  y N

Output

If AtCoDeer can carry out his plan, print Yes; if he cannot, print No.


Sample Input 1

Copy
2
3 1 2
6 1 1

Sample Output 1

Copy
Yes

For example, he can travel as follows: (0,0)(0,1)(1,1)(1,2)(1,1)(1,0), then (1,1).


Sample Input 2

Copy
1
2 100 100

Sample Output 2

Copy
No

It is impossible to be at (100,100) two seconds after being at (0,0).


Sample Input 3

Copy
2
5 1 1
100 1 1

Sample Output 3

Copy
No


这题题目简单,我就不说题意了,只要根据结论写就可以AC了

结论是   当前点到上一点的曼哈顿距离所需要的时间(起点的上一点为原点)%2==0

这代表该点满足,否则不满足


#include <cstdio>
#include <cmath>
#include <cstdlib>
using namespace std;

int main() {
    int t;
    scanf("%d",&t);
    int s=0,sx=0,sy=0;
    while (t--) {
        int tx,x,y;
        scanf("%d%d%d",&tx,&x,&y);
        if((tx-s-abs(x-sx)-abs(y-sy))<0||(tx-s-abs(x-sx)-abs(y-sy))%2==1)
            break;
        s=tx;
        sx=x;
        sy=y;
    }
    t++;
    if(t)
        printf("No\n");
    else
        printf("Yes\n");
    return 0;
}




Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325524666&siteId=291194637