#bzoj2636. crisis

crisis

题目原件

tmp.png

题目描述

某地爆发了经济危机,反对派武装发动造反。你任某军军长,负责消灭该地的反动派武装力量。由于你英勇神武,战无不克,很快,反动派武装就被基本消灭。残部退守到位于(0,0)(0,0)附近的大本营,你决定包围它,然后择日发起总攻。你将在士兵下达命令,例如第11旅和第22旅向西行军500km500km。第22旅和第33旅绕着大本营巡逻,吸引敌军注意。当然有时候你发现你的一些部署不大妥当。连忙撤销之前下达的一些命令,部署后作为一名一丝不苟的少将。你一定要抽查一些士兵的位置。是否恰好达到了预定的位置?当然你首先要算出被抽查士兵应该所处的位置才行。

测试点:crisis\text {crisis}

输入格式

第一行是一个数nn,表示你的麾下士兵的总数。接下来nn行,每行两个数,表示每个士兵在开始行动前所处的位置。接下来一个数qq表示操作个数。再qq行,每行是一个操作,一共有66种可能的操作。操作分为33类,命令撤销和重做,询问。

命令有三种:

  • Move i j a b (第ii个士兵到第jj小个士兵向东移动aa米,向北移动bb米。)
  • Patrol i j a (第ii个士兵到第jj个士兵围绕敌军大本营逆时针巡逻aa弧度。)
  • Lurk i j (第ii个士兵到第jj个士兵潜伏到敌军大本营。)

撤销和重做:

  • Cancel a (撤销最后一次要被执行的(移动,巡逻或潜伏)命令。)
  • Redo a (重做最后一个被撤销的命令。)

询问:

  • Ask i (询问第ii个士兵应处的位置。)

输出格式

对每个询问输出一行,每行两个数代表被询问的士兵应处的位置。你的输出与参考答案的误差小于0.00010.0001即视为正确。

样例

10
1 1
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
15
Lurk 1 5
Move 1 5 100 100
Move 1 1 100 100
Move 1 1 10 0
Move 1 1 0 10
Cancel 1
Cancel 1
Patrol 6 10 3.14159265358979323
Patrol 6 8 1.57079632679489661
Move 2 7 -100 0
Cancel 2
Ask 1
Ask 10
Redo 1
Ask 5
200 200
-1 -10
100 100

数据规模与约定

你早已摸清了反对派武装的脾气。知道他们不敢贸然行动,因此即使你的士兵很靠近敌军大本营,在你为主动攻击之前,敌人也不会攻击你的士兵。

另外一个军的人数一般为1.5×1042×1041.5\times 10^4\sim 2\times 10^4人。

不会有超过5×1045\times 10^4次操作。

另外考虑到潜伏是十分危险的行动,大概有60%60\%的数据不含潜伏。