您的位置:首页 > 其它

AtCoder Regular Contest 089 C - Traveling

2018-02-01 20:15 691 查看
Problem StatementAtCoDeer 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),
(x−1,y),
(x,y+1) and
(x,y−1). 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
ti
<
ti+1
(1

i

N−1)
All input values are integers.
InputInput is given from Standard Input in the following format:
N
t1 x1 y1
t2 x2 y2
:
tN xN yN

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

Sample Input 1
2
3 1 2
6 1 1

Sample Output 1
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
1
2 100 100

Sample Output 2
No

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

Sample Input 3
2
5 1 1
100 1 1

Sample Output 3
No


这个方法真的很奇淫:

1. 两点之间的步数小于需要的步数,则不能到达(可行性剪枝)

2. 到达目标点的步数非偶数步,否则不能到达(奇偶剪枝)

3. 否则便可以到达

根本不需要写DFS

#include <iostream>
#include <cmath>

using namespace std;
int main(){
int n, tt, tx, ty;
int t = 0, x = 0, y = 0, flag = 0;
cin >> n;
for (int i = 0; i<n; i++){
cin >> tt >> tx >> ty;
if (abs(tx - x) + abs(ty - y)>(tt - t) || (abs(tx - x) + abs(ty - y)) % 2 != (tt - t) % 2)
flag = 1;
t = tt;
x = tx;
y = ty;
}
if (!flag) cout << "Yes" << endl;
else cout << "No" << endl;

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: