QOJ.ac

QOJ

実行時間制限: 5 s メモリ制限: 2048 MB 満点: 100

#8775. 山地工艺

統計

在电子游戏 MountainCraft 的元世界中,今天又是美好的一天!顾名思义,MountainCraft 拥有一个广阔的开放世界,到处都是可供探索的山脉。你的游戏化身在一个偏远的岛屿上醒来,凝视着地平线上的群山。

地平线的视野可以建模为一个笛卡尔平面,其中 $x$ 轴 ($y = 0$) 将陆地与海洋分开。每座山峰由一个点 $(x, y)$ 表示,山的两侧斜率分别为 $+1$ 和 $-1$,与山峰共同构成一个三角形。

你的化身只能看到视野范围(viewport)内的山脉部分。山脉的可见边缘(即不与其他山脉重叠的部分)以粗体渲染。如果山脉发生重叠,重叠的部分将不会以粗体渲染。山脉重叠并不要求边缘必须相交。

图 1:所有山脉出现后的第一个样例输入。

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

输入格式

输入的第一行包含两个整数 $q$ ($1 \le q \le 2 \cdot 10^5$) 和 $w$ ($1 \le w \le 10^9$),其中 $q$ 是查询次数,$w$ 是视野的宽度。视野的宽度范围从 $0$ 到 $w$。视野在上方是无界的。

接下来的 $q$ 行,每行包含两个整数 $x$ ($0 \le x \le w$) 和 $y$ ($0 < y \le 10^9$),表示某座山峰的坐标。如果 $(x, y)$ 是一座当前可见山脉的山峰,则该山脉消失。否则,该山脉将变为可见。

输出格式

输出 $q$ 行。对于每次查询,按顺序输出一行,包含一个数字,即渲染出的粗体线的总长度。如果你的答案与裁判答案的绝对误差或相对误差在 $10^{-6}$ 以内,则会被接受。

样例

样例输入 1

3 10
3 2
7 3
9 6

样例输出 1

5.656854
12.727922
12.727922

样例输入 2

5 100
31 41
59 26
31 41
59 26
31 41

样例输出 2

101.823376
120.208153
73.539105
0.000000
101.823376

说明

在第一个样例中,前两座山脉在点 $(4.5, 0.5)$ 处相交。该点下方的山脉部分不会被渲染为粗体。

在第二个样例中,左侧山脉出现,然后消失,接着再次出现。右侧山脉出现,然后消失。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.