QOJ.ac

QOJ

Limite de temps : 2.0 s Limite de mémoire : 256 MB Points totaux : 100

#17841. 伐木公司

Statistiques

“—— 听好了,伙计们!这就是我们的林地。砍倒最大的一棵,然后把其他的木头都压在它上面。用钢丝绳把它们都捆在一起,然后用拖拉机把它们拖走。明白了吗?—— 这听起来挺有道理的。留下那些新长出来的小树丛。不用担心树桩。注意钢丝绳!这样我们就能把效益最大化。工资也是……”

——《女孩们》(Devchata)[一部 1962 年的苏联电影]

Ilya Kovrigin 和他的伐木工团队提出了一种新的优化方法。这个想法是将几棵树砍倒,使它们大致落在同一个地方,然后将它们捆在一起并用拖拉机运走。为了解决这个问题,请确定最多可以砍倒多少棵树,使得它们都可以被系到一辆静止的拖拉机上。

假设地面是一个水平面。地面上生长着 $N$ 棵树,每棵树都是一条有向线段,有起点和终点。生长中的树是一条垂直于地面的线段,其起点严格位于地面上。对于每棵树,给出了它的坐标 $(x_i, y_i)$ 和高度 $h_i$。

当一棵树被砍倒时,它成为地面上的一条线段,起点仍在同一点 $(x_i, y_i)$,且长度 $h_i$ 保持不变。砍倒的树从起点指向终点的方向是任意的,由伐木工选择。

拖拉机可以开到任意点。你只能将那些终点与拖拉机的距离不超过 $R$ 的树系到拖拉机上。假设拖拉机和树木之间不会互相阻挡,即没有移动限制。

输入格式

输入的第一行包含一个整数 $N$ —— 林地中树木的数量,以及一个实数 $R$ —— 拖拉机抓取的半径($1 \le N \le 250$,$\frac{1}{10} \le R \le 1\,000$)。

接下来的 $N$ 行描述树木。每棵树由三个实数描述:平面上的坐标 $x_i, y_i$ 和高度 $h_i$($|x_i|, |y_i| \le 1\,000$,$\frac{1}{10} \le h_i \le 1\,000$)。

所有实数的小数位数不超过 15 位。保证任意两棵树之间的距离不小于 $\frac{1}{10}$。保证如果将拖拉机的抓取半径 $R$ 增加 $10^{-3}$,答案中的最大树木数量不会改变。

输出格式

输出的第一行打印一个整数 $A$ —— 一次最多可以系在拖拉机上的树木数量。

第二行打印两个实数 $X^*$ 和 $Y^*$ —— 拖拉机应当停放的位置坐标。

在接下来的 $A$ 行中,指出哪些树必须被砍倒以及如何砍倒。在这些行中的每一行,打印一个整数 $k_i$ —— 要砍倒的树的编号,以及 $\varphi_i$ —— 定义砍伐方向的极角($1 \le k_i \le N$,$0 \le \varphi_i \le 360$)。

树木按照在输入文件中描述的顺序从 1 开始编号。打印树木的顺序无关紧要。极角是以度为单位,从 X 轴正方向开始沿 Y 轴正方向(逆时针)测量的,它定义了砍倒的树从起点到终点的方向。

建议所有实数都保留 15 位小数。评测程序将使用增加 $10^{-6}$ 后的半径 $R$ 来检验你的方案。

样例

输入样例 1

5 1.0
8.0 4.0 2.0
11.13 9.19 0.55
3 3 3
12 6 1
6 8 2

输出样例 1

3
6 5.41234567890
1 130
5 259.726501937845610
3 35

说明

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.