atcoder#ABC189E. [ABC189E] Rotate and Flip

[ABC189E] Rotate and Flip

题目描述

2 2 次元平面に N N 個の駒が置かれています。駒には 1 1 から N N までの番号が付いており、駒 i i が置かれている座標は (Xi,Yi) (X_i,Y_i) です。複数の駒が同じ座標に置かれている可能性もあります。

M M 個の操作 op1, , opM \mathrm{op}_1,\ \ldots,\ \mathrm{op}_M を順に行います。操作は 4 4 種類あり、入力形式と操作の内容は以下の通りです。

  • 1:全ての駒を、原点を中心に時計回りに 90 90 度回転させた位置に移動する
  • 2:全ての駒を、原点を中心に反時計回りに 90 90 度回転させた位置に移動する
  • 3 p:全ての駒を、直線 x=p x=p について対称な位置に移動する
  • 4 p:全ての駒を、直線 y=p y=p について対称な位置に移動する

クエリが Q Q 個与えられます。 i i 番目のクエリでは 2 2 つの整数 Ai,Bi A_i,B_i が与えられるので、Ai A_i 個目の操作を行った直後に駒 Bi B_i がある座標を出力してください。ここで、1 1 個目の操作の直前を「0 0 個目の操作の直後」とみなします。

输入格式

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

N N X1 X_1 Y1 Y_1 \vdots XN X_N YN Y_N M M op1 \mathrm{op}_1 \vdots opM \mathrm{op}_M Q Q A1 A_1 B1 B_1 \vdots AQ A_Q BQ B_Q

输出格式

各クエリに対する答えを、1 1 行に 1 1 つずつ、x x 座標、y y 座標の順に空白区切りで出力せよ。

题目大意

题目描述

给出 NN 个点,以及每个点得坐标 (xi,yi)(x_i,y_i),给出 MM 次操作,操作如下:

  • 第一种操作:将所有点绕原点 (0,0)(0,0) 顺时针旋转 9090 度。

  • 第二种操作:将所有点绕原点 (0,0)(0,0) 逆时针旋转 9090 度。

  • 第三种操作:以 x=px=p 为对称轴,将所有的点对称过去。

  • 第四种操作:以 y=py=p 为对称轴,将所有的点对称过去。

接着给出 QQ 组询问,每次询问在某次操作过后某个点的坐标。

输入格式

第一行输入 NN,表示 NN 个点。

接下来 NN 行,每行输入 xi,yix_i,y_i,表示第 ii 个点的坐标。

N+2N+2 行输入 MM,表示操作次数。

接下来 MM 行,每行首先输入 optiopt_i,表示执行第 optiopt_i 种操作。如果 opti=3opt_i=3 或者 opti=4opt_i=4,再输入一个数字 pp,表示一条直线。

N+M+3N+M+3 行输入 QQ,表示询问个数。

接下来 QQ 行,每行两个数字 Ai,BiA_i,B_i,表示询问在第 AiA_i 次操作过后第 BiB_i 个点的坐标。特别的,Ai=0A_i=0 表示询问初始的坐标。

输出格式

输出 QQ 行,每行输出对于一次询问的答案。

1
1 2
4
1
3 3
2
4 2
5
0 1
1 1
2 1
3 1
4 1
1 2
2 -1
4 -1
1 4
1 0
2
1000000000 0
0 1000000000
4
3 -1000000000
4 -1000000000
3 1000000000
4 1000000000
2
4 1
4 2
5000000000 4000000000
4000000000 5000000000

提示

制約

  • 入力は全て整数
  • 1  N  2× 105 1\ \leq\ N\ \leq\ 2\times\ 10^5
  • 1  M  2× 105 1\ \leq\ M\ \leq\ 2\times\ 10^5
  • 1  Q  2× 105 1\ \leq\ Q\ \leq\ 2\times\ 10^5
  • 109  Xi,Yi  109 -10^9\ \leq\ X_i,Y_i\ \leq\ 10^9
  • opi \mathrm{op}_i 4 4 つの操作の種類のいずれかの入力形式に従う
  • 3 p 及び 4 p の操作において 109  p  109 -10^9\ \leq\ p\ \leq\ 10^9
  • 0  Ai  M 0\ \leq\ A_i\ \leq\ M
  • 1  Bi  N 1\ \leq\ B_i\ \leq\ N

Sample Explanation 1

最初、唯一の駒である駒 1 1 (1,2) (1,2) に置かれています。各操作により駒 1 1 の位置は (1,2)(2,1)(4,1)(1,4)(1,0) (1,2)\to(2,-1)\to(4,-1)\to(1,4)\to(1,0) と変化します。