luogu#P11572. [COTS 2015] 机械臂 / Ruka

[COTS 2015] 机械臂 / Ruka

题目背景

译自 Izborne Pripreme 2015 (Croatian IOI/CEOI Team Selection) D1T1。2s,0.5G\texttt{2s,0.5G}

题目描述

给定 nn 个二维笛卡尔坐标系中的向量 vi=(xi,yi)v_i=(x_i,y_i)

令点 P0=(1,1)P_0=(1,1)。对于 1in1\le i\le n,有 Pi=Pi1+viP_i=P_{i-1}+v_i

有一个变量 pos\mathrm{pos},初始时为 11。有 mm 个操作:

  • B\texttt{B}:令 posmax(1,pos1)\mathrm{pos}\gets\max(1,\mathrm{pos}-1)
  • F\texttt{F}:令 posmin(n,pos+1)\mathrm{pos}\gets\min(n,\mathrm{pos}+1)
  • C\texttt{C} xx yy:令 vpos(x,y)v_{\mathrm{pos}}\gets (x,y)
  • Q\texttt{Q}:询问 1inf(i)\displaystyle \sum_{1\le i\le n} f(i),其中 f(i)f(i) 表示线段 Pi1PiP_{i-1}P_i 与坐标轴相交了多少次。
    • 特别地,若 Pi1PiP_{i-1}P_i 经过原点,我们也认为与两个坐标轴都相交。

这里,保证任意时刻,对于 1in\forall 1\le i\le n,都有 xi,yix_i,y_i 是偶数。

输入格式

第一行,一个正整数 nn

接下来 nn 行,每行两个偶数 xi,yix_i,y_i

(n+2)(n+2) 行,一个正整数 mm

接下来 mm 行,每行先是一个大写字母,再是零个或两个偶数,描述一个操作。格式见题目描述处。

输出格式

对于每个查询操作,输出一行一个非负整数表示答案。

6
2 2
2 -6
-2 -4
-6 4
10 -10
-8 12
16
Q
C -4 -4
F
F
Q
F
C 6 -2
B
B
B
Q
C 0 6
Q
F
C -8 4
Q
4
4
3
1
5
5
6 2
0 -6
-2 2
-6 -8
4 0
12
Q
C 4 4
Q
F
F
F
C -6 -2
Q
B
B
C -4 -6
Q
3
5
5
4

提示

对于 100%100\% 的数据,保证:

  • 1n1051\le n\le 10^51n3×1051\le n\le 3\times 10^5
  • x,y,xi,yi500|x|,|y|,|x_i|,|y_i|\le 500,且均为偶数
子任务编号 nn\le mm\le 得分
1 1 1000 1\, 000 10001\, 000 9 9
2 2 5×104 5\times 10^4 105 10^5 35 35
3 3 105 10^5 3×105 3\times 10^5 56 56