题目名称 2023. [NOI 2015]小园丁与老司机
输入输出 farm.in/out
难度等级 ★★★★
时间限制 1000 ms (1 s)
内存限制 512 MiB
测试数据 20
题目来源 Gravatar神利·代目 于2016-04-02加入
开放分组 全部用户
提交状态
分类标签
NOI 动态规划 网络流
分享题解
通过:13, 提交:45, 通过率:28.89%
GravatarFoolMike 100 0.730 s 101.40 MiB C++
Gravatar铁策 100 0.752 s 7.36 MiB C++
Gravatar小一米 100 0.832 s 14.29 MiB C++
Gravatar_Itachi 100 0.882 s 16.36 MiB C++
Gravatarmikumikumi 100 1.124 s 37.23 MiB C++
Gravatarmikumikumi 100 1.183 s 37.23 MiB C++
Gravatar0 100 1.355 s 16.90 MiB C++
Gravatartest 100 1.444 s 6.67 MiB C++
Gravatarsunshine123 100 1.533 s 90.36 MiB C++
Gravatarzzzzzfy 100 1.704 s 14.13 MiB C++
关于 小园丁与老司机 的近10条评论(全部评论)
不是DAG最小路径覆盖吗
GravatarImone NOI2018Au
2017-05-19 17:35 6楼
一定要把可行流手算出来,要不然就得像我一样TLE……
膜拜神犇出题人造的强大数据,dinic莫入。
GravatarFoolMike
2017-05-02 21:51 5楼
感谢昊神提供评测插件,感谢钢哥提供数据,感谢我提供题面。。。。。。
大视野原版数据。。。。。。
Gravatar神利·代目
2016-04-03 06:24 4楼
终于把这题弄好了,可以交了,坐等张灵犀前来切题。。。。。。
Gravatar神利·代目
2016-04-03 06:24 3楼
自己写的SPJ,留念!
Gravatar葳棠殇
2016-04-02 21:44 2楼
想传题,但并不想写评测插件......
Gravatar神利·代目
2016-04-01 12:03 1楼

2023. [NOI 2015]小园丁与老司机

★★★★   输入文件:farm.in   输出文件:farm.out   评测插件
时间限制:1 s   内存限制:512 MiB

【题目描述】

小园丁Mr. S负责看管一片田野,田野可以看作一个二维平面。

田野上有 $n$ 棵许愿树,编号$1,2,3,⋯,n$,每棵树可以看作平面上的一个点,其中第$i$棵树$(1≤i≤n)$位于坐标$(x_i,y_i)$。任意两棵树的坐标均不相同。

老司机Mr. P从原点$(0,0)$驾车出发,进行若干轮行动。每一轮,Mr. P首先选择任意一个满足以下条件的方向:

为左、右、上、左上 45°、右上 45°五个方向之一。

沿此方向前进可以到达一棵他尚未许愿过的树。

完成选择后,Mr. P沿该方向直线前进,必须到达该方向上距离最近的尚未许愿的树,在树下许愿并继续下一轮行动。如果没有满足条件的方向可供选择,则停止行动。他会采取最优策略,在尽可能多的树下许愿。若最优策略不唯一,可以选择任意一种。

不幸的是,小园丁Mr. S发现由于田野土质松软,老司机Mr. P的小汽车在每轮行进过程中,都会在田野上留下一条车辙印,一条车辙印可看作以两棵树(或原点和一棵树)为端点的一条线段。

在Mr. P之后,还有很多许愿者计划驾车来田野许愿,这些许愿者都会像Mr. P一样任选一种最优策略行动。Mr. S认为非左右方向(即上、左上 45°、右上 45°三个方向)的车辙印很不美观,为了维护田野的形象,他打算租用一些轧路机,在这群许愿者到来之前夯实所有“可能留下非左右方向车辙印”的地面。“可能留下非左右方向车辙印”的地面应当是田野上的若干条线段,其中每条线段都包含在某一种最优策略的行进路线中。每台轧路机都采取满足以下三个条件的工作模式:

1、从原点或任意一棵树出发。

2、只能向上、左上 45°、右上 45°三个方向之一移动,并且只能在树下改变方向或停止。

3、只能经过“可能留下非左右方向车辙印”的地面,但是同一块地面可以被多台轧路机经过。

现在Mr. P和Mr. S分别向你提出了一个问题:

1、请给Mr .P指出任意一条最优路线。

2、请告诉Mr. S最少需要租用多少台轧路机。

【输入格式】

输入的第$1$行包含$1$个正整数$n$,表示许愿树的数量。

接下来$n$行,第$i+1$行包含$2$个整数$x_i,y_i$,中间用单个空格隔开,表示第$i$棵许愿树的坐标。

【输出格式】

输出包括 3 行。

输出的第 $1$ 行输出 $1$ 个整数 $m$,表示 Mr. P 最多能在多少棵树下许愿。

输出的第 $2$ 行输出 $m$ 个整数,相邻整数之间用单个空格隔开,表示 Mr. P 应该依次在哪些树下许愿。

输出的第 $3$ 行输出 $1$ 个整数,表示 Mr. S 最少需要租用多少台轧路机。

【样例输入1】

6
-1 1
1 1
-2 2
0 8
0 9
0 10

【样例输出1】

3
2 1 3
3

【样例说明1】

最优路线 2 条可许愿 3 次:$(0,0)→(1,1)→(−1,1)→(−2,2)$ 或 $(0,0)→(0,8)→(0,9)→(0,10)$。 

至少 3 台轧路机,路线是 $(0,0)→(1,1),(-1,1)→(-2,2)$ 和 $(0,0)→(0,8)→(0,9)→(0,10)$。

【样例输入2】

4
0 1
-2 1
2 1
3 2

【样例输出2】

4
1 2 3 4
2

【样例说明2】

最优路线唯一: $(0,0) → (0,1) → (-2,1) → (2,1) → (3,2)$ ,可许愿 $4$ 次。其中在 $(0,1)$ 许愿后,从 $(-2,1)$ 出发沿着向右的方向能够到达的最近的未许愿过的树是$(2,1)$,所以可以到达 $(2,1)$ 。

而如果沿着 $(0,0) → (0,1) → (2,1) → (-2,1) $的方向前进,此时 $(-2,1)$ 右边所有树都是许愿过的,根据题目条件规定,停止前进。故无法获得最优解。

$(0,0) → (0,1)$ 与 $(2,1) → (3,2)$ 会留下非左右方向车辙印,需 2 台轧路机

【数据规模与约定】

所有测试数据的范围和特点如下表所示

【评分方式】

对于每个测试点:

若输出的第 $1$ 行正确,得到该测试点 $20%$ 的分数;

若输出的前两行正确,得到该测试点 $40%$ 的分数;

若输出完全正确,得到该测试点 $100%$ 的分数。

【题目来源】

NOI 2015 Day2 Task3