atcoder#PANASONIC2020F. Fractal Shortest Path

Fractal Shortest Path

题目描述

非負整数 K K に対し、以下のようにレベル K K のフラクタルを定義します。

  • レベル 0 0 のフラクタルとは、白いマス一個のみからなるグリッドである。
  • K > 0 K\ >\ 0 のとき、レベル K K のフラクタルは 3K × 3K 3^K\ \times\ 3^K のグリッドである。このグリッドを 3K1 × 3K1 3^{K-1}\ \times\ 3^{K-1} のブロック 9 9 個に分割したとき、
    • 中央のブロックは全て黒マスからなる。
    • 他の 8 8 個のブロックは、レベル K1 K-1 のフラクタルになっている。

たとえば、レベル 2 2 のフラクタルは下図の通りです。

レベル 2 のフラクタル

レベル 30 30 のフラクタルにおいて、上から r r 番目、左から c c 番目のマスを (r, c) (r,\ c) と書きます。

Q Q 個の整数組 (ai, bi, ci, di) (a_i,\ b_i,\ c_i,\ d_i) が与えられます。 それぞれの組について、(ai, bi) (a_i,\ b_i) から (ci, di) (c_i,\ d_i) への距離を求めてください。

ただし、(a, b) (a,\ b) から (c, d) (c,\ d) への距離とは、以下の条件を満たすような最小の n n とします。

  • ある白マスの列 (x0, y0), , (xn, yn) (x_0,\ y_0),\ \ldots,\ (x_n,\ y_n) が存在して、以下の条件を満たす。
    • (x0, y0) = (a, b) (x_0,\ y_0)\ =\ (a,\ b)
    • (xn, yn) = (c, d) (x_n,\ y_n)\ =\ (c,\ d)
    • 任意の i (0  i  n1) i\ (0\ \leq\ i\ \leq\ n-1) に対し、マス (xi, yi) (x_i,\ y_i) (xi+1, yi+1) (x_{i+1},\ y_{i+1}) は辺で接する。

输入格式

入力は以下の形式で標準入力から与えられる。

Q Q a1 b1 c1 d1 a_1\ b_1\ c_1\ d_1 : : aQ bQ cQ dQ a_Q\ b_Q\ c_Q\ d_Q

输出格式

Q Q 行出力せよ。 i i 行目には、(ai, bi) (a_i,\ b_i) から (ci, di) (c_i,\ d_i) への距離を出力せよ。

题目大意

定义

kk 级图表示长宽均为 3k3^k 的图,将图分为9部分(见题目,每部分边长为 3k13^{k-1} ),最中间一部分全为黑,剩下的每一部分都是一个 k1k-1 级图.

现有 \infty 级图,格点为黑的表示不能走,询问 QQ(ai,bi)(a_i,b_i)(ci,di)(c_i,d_i) 的最短距离。不能走斜线.

数据范围

1Q100001 \leq Q \leq 10000

1ai,bi,ci,di330 1 \leq ai,bi,ci,di \leq 3^{30}

保证 询问的两点不会是同一位置,所有输入都是整数.

样例解释

2
4 2 7 4
9 9 1 9
5
8

提示

制約

  • 1  Q  10000 1\ \leq\ Q\ \leq\ 10000
  • 1  ai, bi, ci, di  330 1\ \leq\ a_i,\ b_i,\ c_i,\ d_i\ \leq\ 3^{30}
  • (ai, bi)  (ci, di) (a_i,\ b_i)\ \neq\ (c_i,\ d_i)
  • (ai, bi), (ci, di) (a_i,\ b_i),\ (c_i,\ d_i) は白マスである。
  • 入力は全て整数である。

Sample Explanation 1

![](https://img.atcoder.jp/panasonic2020/b590cee9850abdad4109ab940f9efe5a.png)