Cannot parse: undefinedms error parsing time
题目描述
此题负责评测原题的后 3 个测试点。要评测前 7 个测试点,请前往 3178。
阿塞拜疆因地毯而闻名。作为一位地毯设计大师,你在做新设计时想画一条折线。一条折线是二维平面上包含 t 条线段的线段序列,而这些线段由包含 t+1 个点 p0,⋯pt 的点序列按照此规则构成:对所有的 0≤j≤t−1,都有一条线段连接点 pj 和 pj+1。
为完成这个新设计,你已经标出了二维平面中的 n 个小圆点。小圆点 i(1≤i≤n)的坐标为 (x[i],y[i])。不存在 x 坐标或 y 坐标相同的两个小圆点。
现在你想要找到一个点序列 $(sx[0], sy[0]),(sx[1],sy[1]), \cdots, (sx[k], sy[k])$,由该点序列构成的折线需满足
- 该折线从 (0,0) 开始(即 sx[0]=0 且 sy[0]=0)。
- 该折线经过所有的小圆点(它们不必是线段的端点)。
- 该折线仅包括水平线段和竖直线段(对于构成该折线的连续两个点,其 x 坐标或 y 坐标相等)。
折线中的线段可以相交或重叠;换言之,平面上的每个点可以被任意数量的线段覆盖。
本题是一个有部分分的提交答案型题目。请从上方「附加文件」下载 10 个输入文件,这些文件给出了小圆点的位置。对每个输入文件,你需要提交一个答案文件,描述满足要求的折线。你的得分将取决于折线中的线段数量(参见下面的计分方式一节)。
输入格式
第一行,一个整数 n,表示小圆点的数量。
第 i+1 行(1≤i≤n),两个整数 x[i],y[i],表示第 i 个小圆点的坐标。
输出格式
第一行,一个整数 k,表示在折线中你使用的线段数量。
第 j+1 行(1≤j≤k),两个整数 sx[j],sy[j],表示你选取的点序列中第 j 个点的坐标。
注意:
- 你不需要输出 sx[0],sy[0];换言之,第 2 行输出的是 sx[1],sy[1]。
- sx[j],sy[j] 都必须为整数。
- −2⋅109≤sx[j],sy[j]≤2⋅109
4
2 1
3 3
4 4
5 2
6
2 0
2 3
5 3
5 2
4 2
4 4
数据范围与提示
数据范围与限制
对于所有数据:
- 1≤n≤100 000
- 1≤x[i],y[i]≤109
- 所有 x[i] 和 y[i] 和值都是整数。
- 不存在 x 坐标或 y 坐标相同的两个小圆点,也就是说,对于所有的 i1=i2,都有 x[i1]=x[i2],且 y[i1]=y[i2]。
计分方式
对每个测试点,你最多能够得到 10 分,如果给出一条非法的折线,你将得到 0 分。否则,得分将根据一个递减序列 c1,⋯,c10 来计算。
假设你的解答是一条包含 k 条线段的合法折线。那么,你将得到
- i 分,如果 k=ci(1≤i≤10)
- i+ci−ci+1ci−k 分,如果 ci+1<k<ci(1≤i≤9)
- 0 分,如果 k>c1
- 10 分,如果 k<c10。
可以这样理解:在 k∈(ci+1,ci) 这个区间上,你的得分是随着 k 减小线性增大的。一旦得分,得分一定在 [1,10] 区间内。
以下是每个测试点 n 与 ci 的信息:
测试点 |
n |
c1 |
c2 |
c3 |
c4 |
c5 |
c6 |
c7 |
c8 |
c9 |
c10 |
8∼10 |
100 000 |
200 000 |
150 475 |
100 949 |
100 500 |
100 275 |
100 050 |
100 027 |
100 015 |
100 009 |
100 003 |
再次提醒,此题负责评测原题的后 3 个测试点。
可视化工具
在本题的附加文件中有一个脚本,能让你对输入文件和输出文件进行可视化。
在对输入文件做可视化时,使用如下命令:
python vis.py [input file]
对于某个输入数据,你还可以使用下面的命令对你的解答进行可视化,由于技术方面的限制,所提供的可视化工具仅显示输出文件中的前 1000 条线段。
python vis.py [input file] --solution [output file]
例如:
python vis.py examples/00.in --solution examples/00.out