#5033. Problem 2. Painting Fence Posts
Problem 2. Painting Fence Posts
Problem 2. Painting Fence Posts
USACO 2024 US Open Contest, Silver
注意:本题的时间限制和内存限制为 3 秒 和 512MB,分别为通常限制的 1.5 倍和 2 倍。
Farmer John 的 头奶牛()每头都喜欢日常沿围着牧场的栅栏散步。不幸的是,每当一头奶牛走过栅栏柱子时,她就会碰到它,这要求 Farmer John 需要定期重新粉刷栅栏柱子。
栅栏由 根柱子组成(, 为偶数),每根柱子的位置是 FJ 农场地图上的一个不同的二维坐标点 ()。每根柱子通过垂直或水平线段的栅栏连接到两根相邻的柱子,因此整个栅栏可以被视为各边平行于 x 轴或 y 轴的一个多边形(最后一根柱子连回第一根柱子,确保围栏形成一个包围牧场的闭环)。栅栏多边形是「规则的」,体现在栅栏段仅可能在其端点处重合,每根柱子恰好属于两个栅栏段,同时每两个在端点处相交的栅栏段都是垂直的。
每头奶牛的日常散步都有一个偏好的起始和结束位置,均为沿栅栏的某个点(可能在柱子处,也可能不在)。每头奶牛日常散步时沿着栅栏行走,从起始位置开始,到结束位置结束。由于栅栏形成闭环,奶牛有两条路线可以选择。由于奶牛是一种有点懒的生物,每头奶牛都会选择距离较短的方向沿栅栏行走。值得注意的是,这个选择总是明确的——不存在并列的情况!
一头奶牛会触碰一根栅栏柱子,当她走过这根柱子,或者当这根栅栏柱子是她散步的起点或终点时。请帮助 FJ 计算每个栅栏柱子每天所经历的触碰次数,以便他知道接下来要重新粉刷哪根柱子。
可以证明,给定所有柱子的位置,组成的栅栏仅有唯一的可能性。
输入格式(从终端 / 标准输入读入):
输入的第一行包含 和 。以下 行的每一行包含两个整数,表示栅栏柱子的位置,没有特定的顺序。以下 行的每一行包含四个整数 ,表示一头奶牛的起始位置 和结束位置 。
输出格式(输出至终端 / 标准输出):
输出 个整数,包含每个栅栏柱子所经历的触碰次数。
输入样例:
5 4 3 1 1 5 3 5 1 1 2 1 1 5 1 5 3 4 3 1 3 5 2 1 2 1 3 2 3 3
输出样例:
1 2 2 1
柱子以如下方式由栅栏段连接:
$$(3,1)\leftrightarrow (3, 5) \leftrightarrow (1,5) \leftrightarrow (1,1) \leftrightarrow (3,1)$$各奶牛接触的柱子如下:
- 柱子 和 。
- 柱子 和 。
- 柱子 和 。
- 无。
- 无。
输入样例:
2 8 1 1 1 2 0 2 0 3 0 0 0 1 2 3 2 0 1 1 2 1 1 0 1 3
输出样例:
1 0 0 0 1 1 1 2
输入样例:
1 12 0 0 2 0 2 1 1 1 1 2 3 2 3 3 1 3 1 4 2 4 2 5 0 5 2 2 0 2
输出样例:
1 1 1 1 1 0 0 0 0 0 0 0
测试点性质: 测试点 4-6:。测试点 7-9:所有位置均有 。测试点 10-15:没有额外限制。
供题:Brian Dean