2024.10.11 CW 模拟赛

T4

题面


地平线的视图可以被建模为一个平面直角坐标系,\(x\) 轴将陆地与海洋分开。每个山峰由一个点 \((x,y)\) 表示,山的两侧斜率分别为 \(+1\)\(-1\) ,形成一个山顶在最高点的等腰直角三角形。\

你的角色只能看到视口中的山脉的外围部分。山脉的可见边缘,即不被其他山脉遮挡的部分,会以粗体显示。如果山脉重叠,重叠部分不会以粗体显示。山脉之间不需要相交即可重叠。\

不幸的是,由于图形故障,山脉可能会出现和消失。每次变化后,你都需要知道当前视口中所有粗体线条的总长度。

输入格式

输入的第一行包含两个整数 \(q\)\(n\)\(q\) 为查询数量,\(w\) 为视窗宽度。视口的宽度从 \(0\) 延伸到 \(w\) 。视口在顶部是无限的。\

接下来 \(q\) 行中,每行包含两个整数 \(x\) ,\(y\) ,表示某座山峰的顶点 \((x,y)\) 。若 \((x,y)\) 是可见山峰的顶点,该山将消失。否则,该山将变得可见。

输出格式

输出 \(q\) 行。对于每个查询,按顺序输出一行,包含一个实数,表示渲染的粗体线条的总长度。如果你的答案与裁判答案的绝对或相对误差在 \(10^{-6}\) 以内,将被视为答案正确。

数据范围

  • 对于 100% 的数据,\(1 \le q \le 2 \cdot 10^5,0 \le x \le w,1 \le x,y \le 10^9.\)

思路

一座山会覆盖 \((x-y,0)\)\((x+y,0)\) 这一段区间,容易想到线段树维护,因为 \(1 \le x,y \le 10^9\) ,所以需要离散化到 \([1,10^5]\) 否则空间会炸。最后答案再乘上 \(\sqrt{2}\) 即可。

posted @   Steven1013  阅读(5)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示