#P16347. [2026年山东第二轮集训]计算几何题
[2026年山东第二轮集训]计算几何题
题目描述
给定一个周长为 的圆环。每次你可以沿着一条直径或一条半径切一刀。经过若干次切割后,圆环会被分成若干段圆弧,设这些圆弧的弧长构成的可重集为 。
输入给出一个大小为 的可重集 。要求 必须是 的子集,并保证可重集 中只包含整数。
这里,可重集 是可重集 的子集,是指对于任意 , 中 的出现次数不超过 中 的出现次数。
请最小化切割次数,并构造一种达到最少切割次数的方案。
只输出最少切割次数,可以获得该子任务 的部分分。
输入格式
第一行一个整数 。
第二行 个整数 。
输出格式
第一行输出一个整数 ,表示最少切割次数。
接下来 行输出你构造的方案。每行输出两个整数 ,满足
- 当 时,表示这一刀沿半径切,即从圆心出发的一条射线。其方向由 描述:从穿过圆心的水平直线与圆环的交点出发,沿逆时针方向走到射线与圆环的交点,所经过圆弧的弧长为 。
- 当 时,表示这一刀沿直径切,即一条穿过圆心的直线。其方向由 描述:从穿过圆心的水平直线与圆环的交点出发,沿逆时针方向走到该直线与圆环的任意一个交点,所经过圆弧的弧长为 。无论选择该直线的哪一个交点,描述的都是同一条直线。
注意:即使你只希望回答最少切割次数,也必须继续输出 行,并保证每行的两个整数符合范围要求。输出格式不正确可能获得 分。
在题意中, 可以取任意实数;输出中将其限定为整数,是因为可以证明一定存在一组最优解,使所有 均为整数。你必须构造这样的一组方案。
样例
样例 1
输入
1
90
输出
2
0 0
90 0
数据范围
$$1\le n\le 16,\qquad 1\le q_i\le 360,\qquad \sum_{i=1}^{n}q_i\le 360.$$子任务
| 子任务编号 | 特殊性质 | 分值 | |
|---|---|---|---|
| 1 | 无 | 10 | |
| 2 | A | ||
| 3 | B | 20 | |
| 4 | 无 | ||
| 5 | |||
| 6 |
特殊性质:
- A: 对所有 ,均有 ;
- B: 。