#1431. Blinker的噩梦
Blinker的噩梦
题目描述
一天Blinker
醒来,发现自己成为了一个二维世界的点,而且被标记上了一个奇怪的值。
这个世界是由个边界互不相交(且不相切)的图形组成,这里图形仅包括圆和凸多边形。
每个图形还有一个权值。
每次Blinker
走进或走出某个图形时(相切时经过不算),Blinker
的标记值就会被异或上那个值。
现在,我们记录了Blinker
在这个世界的天的信息。
每天可能发生两种事情,一种是某个图形的权值更改为某个值;另一种是Blinker
从某个点走到另一个点。
我们假设Blinker
首次出发前的标记值为,我们希望知道他每次到达目的地后的标记值。
输入格式
输入的第一行包含个数,和,分别表示这个世界的图形数和记录的天数。
接下来有行,每行表示一个图形。
如果一行以字符开头,表示这个图形是一个圆,后面紧跟着三个实数, , 和一个整数,分别表示圆的坐标,坐标和圆的半径以及该图形对应的值。
如果一行以字符开头,表示这个图形是凸多边形,后面紧跟着一个整数,表示凸多
边形的点数,然后后面有对实数,表示个点的坐标,这一行最后一个数是一个整数,表示这个图形对应的值,保证凸多边形上的点按照顺时针给出。
接下来有M行,每行表示一天的记录信息。
如果一行以字符开头,表示这一天Blinker
出行了,接下来有四个实数,
分别表示出发点的坐标和目的地的坐标。
如果一行以字符开头,表示这一天某个图形的值改变了,接下来有两个 和,表示 输入中第 个出现的图形的值变成。
输出格式
对于Blinker
的每个出行输出他到达目的地后的标记值,很显然这个值与Blinker
的路径
无关。
样例
样例输入
2 4
C 0 0 2 1
P 4 -1 -1 -1 1 1 1 1 -1 2
Q -2 -2 2 2
Q -1.5 0 0.0 0.0
C 1 1005
Q -1.5 0 0.0 0.0
样例输出
0
2
0
数据范围与提示
对于的数据,保证: ,凸多边形的点数加上圆的个数小于等于
剩余数据中,保证:
存在一组无图形值变动的数据;
存在一组无凸多边形的数据;
对于的数据,保证:
,单个凸多边形的点数小于等于。图形互不相交,且Blinker
的出发点和目的地不在图形的边界。