推荐题目:洛谷 P5843 [SCOI2012] Blinker 的噩梦

推荐题目:洛谷 P5843 SCOI2012 Blinker 的噩梦

题目描述

一天 Blinker 醒来,发现自己成为了一个二维世界的点,而且被标记上了一个奇怪的值。

这个世界是由 N N N 个边界互不相交(且不相切)的图形组成,这里图形仅包括圆和凸多边形。每个图形还有一个权值。每次 Blinker 走进或走出某个图形时(相切时经过不算),Blinker 的标记值就会被异或上那个值。

现在,我们记录了 Blinker 在这个世界的 M M M 天的信息。每天可能发生两种事情,一种是某个图形的权值更改为某个值;另一种是 Blinker 从某个点走到另一个点。

我们假设 Blinker 首次出发前的标记值为 0 0 0,我们希望知道他每次到达目的地后的标记值。

输入格式

输入的第一行包含 2 2 2 个数, N N N 和 M M M,分别表示这个世界的图形数和记录的天数。

接下来有 N N N 行,每行表示一个图形。

如果一行以字符 C 开头,表示这个图形是一个圆,后面紧跟着三个实数 x x x, y y y, r r r 和一个整数 v v v,分别表示圆的 x x x 坐标, y y y 坐标和圆的半径以及该图形对应的值。

如果一行以字符 P 开头,表示这个图形是凸多边形,后面紧跟着一个整数 L L L,表示凸多边形的点数,然后后面有 L L L 对实数 x 0 x_0 x0, y 0 y_0 y0, x 1 x_1 x1, y 1 y_1 y1 ⋯ \cdots ⋯,表示 L L L 个点的坐标,这一行最后一个数是一个整数 v v v,表示这个图形对应的值,保证凸多边形上的点按照顺时针给出。

接下来有 M M M 行,每行表示一天的记录信息。

如果一行以字符 Q 开头,表示这一天 Blinker 出行了,接下来有 x 0 , y 0 , x 1 , y 1 x_0,y_0,x_1,y_1 x0,y0,x1,y1 四个实数,分别表示出发点的坐标和目的地的坐标。

如果一行以字符 C 开头,表示这一天某个图形的值改变了,接下来有两个 i i i 和 v v v,表示输入中第 i i i 个出现的图形的值变成 v v v。

输出格式

对于 Blinker 的每个出行输出他到达目的地后的标记值,很显然这个值与 Blinker 的路径无关。

输入输出样例 #1

输入 #1

复制代码
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

输出 #1

复制代码
0
2
0

说明/提示

样例解释

样例的世界形如上图:

第一天 Binker 的初始标记值为 0 0 0,可能从 A A A 沿直线走到 B B B,或者他绕过圆走到 B B B,他的标记值最终都保持不变为 0 0 0(假设沿直线从 A A A 走到 B B B,共穿过 4 4 4 次边界,Binker 的标记值变化过程为 1 , 3 , 1 , 0 1,3,1,0 1,3,1,0);

第二天 Binker 的初始标记值为 0 0 0,他通过某种不经过图形边界的方法到达了 C C C 点(即 Binker 瞬间移动或闪烁),然后从 C C C 沿某种路径走到 D D D,这时他的标记值变为 2 2 2;

第三天圆的权值变为 1005 1005 1005;

第四天 Binker 的初始标记值为 2 2 2,他再次回到 C C C,并再次从 C C C 走到 D D D,这时他的标记值又变为 0 0 0。

数据范围

  • 对于 30 % 30\% 30% 的数据, 1 ≤ M ≤ 10.00 1 \le M \le 10.00 1≤M≤10.00,凸多边形的点数加上圆的个数小于等于 1000 1000 1000;
  • 对于 100 % 100\% 100% 的数据, 1 ≤ N ≤ 10 5 1 \le N \le 10^5 1≤N≤105, 1 ≤ M ≤ 10 5 1 \le M \le 10^5 1≤M≤105,单个凸多边形的点数小于等于 34 34 34。图形互不相交,且 Binker 的出发点和目的地不在图形的边界。
相关推荐
小鱼仙官8 分钟前
Ubuntu C++ NTP校时程序
linux·c++·ubuntu
杨丰玮41810 分钟前
从零手写Java飞机躲障碍游戏|Swing绘图、鼠标跟随、计时器碰撞检测实战(五)
java·python·游戏·游戏引擎·图形渲染·动画·贴图
happyprince43 分钟前
03-深刻观-CodeX哲学与升华(源码)
算法·ai编程
不会打球的王子1 小时前
Day 27:迁移学习与微调 — 站在巨人的肩膀上
算法
yangmu32031 小时前
《明末:渊虚之羽》1.7版百款MOD终极指南:硬核配置与保姆级安装教程
游戏
老当益壮梁奶奶1 小时前
Linux软件编程学习笔记(二)Linux文件IO编程入门:从fopen到fgetc
linux·c语言·c++·笔记·学习
sunoo-2291 小时前
C 语言文件 IO 全攻略:从基础函数到实战踩坑(BMP 读取 + 词典查询)
linux·c语言·前端·笔记·vscode·学习
雪的季节1 小时前
C++ 高级(泛型编程与模板)(有空再研究吧)
c++
三十岁老牛再出发1 小时前
8月21日总结
c++·python
数模竞赛Paid answer2 小时前
2025年中青杯数学建模A题康养城市建设求解全过程论文及程序
算法·数学建模·数据分析·中青杯