P8331[IOI2021] 喷泉公园(parks) | ||
|
问题描述
在附近一个公园里,有 \(n\) 座喷泉,编号为从 \(0\) 到 \(n-1\) 。我们把喷泉看成是二维平面上的点。也就是说,喷泉 \(i(0\leq i\leq n-1)\) 是一个点 \((x[i], y[i])\) ,这里 \(x[i]\) 和 \(y[i]\) 是偶数。喷泉的位置各不相同。
建筑师Timothy受雇来规划一些道路的建设,以及每条道路对应的长椅的摆放。每条道路都是一个长度为 \(2\) 的横向或纵向的线段,其端点是两座不同的喷泉。游客应该能够沿着它们即可在任意两座喷泉之间互相抵达。在最开始时,公园里没有任何道路。
对于每条道路,都要在公园里摆放恰好一个长椅,并将其分配给(也就是面朝)这条道路。每个长椅必须摆放在某个点 $ (a,b) $上,这里 \(a\) 和 \(b\) 都是奇数。所有长椅的位置必须都是不同的。在 \((a,b)\) 处的长椅,只能分配给两个端点均为 \((a-1,b-1)\) , \((a-1,b+1)\) , \((a+1,b-1)\) 和 \((a+1,b+1)\) 其中之一的道路。举例来说,在 \((3,3)\) 处的长椅只能分配给下面四条线段所表示的道路之一: \((2,2)-(2,4)\) , \((2,4)-(4,4)\) , \((4,4)-(4,2)\) , \((4,2)- (2,2)\) 。
请帮助Timothy判断一下,能否在满足上述所有要求的前提下,造出所有道路,并摆放和分配长椅。如果这能做到,请给他一个可行的解决方案。如果有多个满足所有要求的可行方案,你可以报告其中的任意方案。
输入格式
已将原题的输入方式从交互式改为传统方式
第一行一个数 \(n\) 。
接下来 \(n\) 行,每行两个数 \(x[i],y[i]\) 。
输出格式
第一行一个数,如果存在某种建设方案,输出 \(1\) ,否则输出 \(0\) 。
如果存在某种建设方案,则以如下格式输出方案:
第二行输出一个数 \(m\) 表示建设方案中道路的条数。
接下来 \(m\) 行,每行四个数 \(u[j],v[j],a[j],b[j]\) ,表示第 \(j\) 条道路连接喷泉 \(u[j]\) 和 \(v[j]\) ,将第 \(j\) 个长椅分配给道路 \(j\) ,第 \(j\) 个长椅位于 \((a[j],b[j])\) 。
每条道路必须是长度为 \(2\) 的横向或纵向线段。任意两条不同的道路,最多只能有一个公共端点(某个喷泉)。这些道路在建成之后,必须能够沿着它们就可以在任意两个喷泉之间互相抵达。不同的长椅不能摆放在同一位置。
样例输入 1
5
4 4
4 6
6 4
4 2
2 4
样例输出 1
1
4
0 2 5 5
0 1 3 5
3 0 5 3
4 0 3 3
样例输入 2
2
2 2
4 6
样例输出 2
0
提示
样例1解释
这个样例总共有 \(5\) 座喷泉:
- 喷泉 \(0\) 坐落在 \((4,4)\) 处
- 喷泉 \(1\) 坐落在 \((4,6)\) 处
- 喷泉 \(2\) 坐落在 \((6,4)\) 处
- 喷泉 \(3\) 坐落在 \((4,2)\) 处
- 喷泉 \(4\) 坐落在 \((2,4)\) 处
可以建造下面这样 $ 4 $条道路,其中每条道路连接两座喷泉,并且摆放着对应的长椅:
道路编号 | 道路所连接的喷泉的编号 | 所分配的长椅的位置 |
---|---|---|
\(0\) | \(0,2\) | \((5,5)\) |
\(1\) | \(0,1\) | \((3,5)\) |
\(2\) | \(3,0\) | \((5,3)\) |
\(3\) | \(4,0\) | \((3,3)\) |
该方案对应下图:
注意,在这个例子中,有多个满足要求的方案,它们都将被视为正确。
样例2解释
喷泉 \(0\) 坐落在 \((2,2)\) 处,而喷泉 \(1\) 坐落在 \((4,6)\) 处。由于不可能建造出满足要求的道路,所以无解,只输出第一行的 \(0\) 。
数据范围
所有测试数据
\(1\leq n\leq 200\;000\)
\(2\leq x[i],y[i] \leq 200\;000\)
\(x[i],y[i]\) 都是偶数,任意两座喷泉的位置均不相同。
子任务 \(1(5\%)\) : \(x[i]=2\)
子任务 \(2(10\%)\) : \(2\leq x[i]\leq 4\)
子任务 \(3(15\%)\) : \(2\leq x[i]\leq 6\)
子任务 \(4(20\%)\) : 至多只有一种道路建设方案,能够让游客在任意两座喷泉之间沿着这些道路即可互相抵达
子任务 \(5(20\%)\) : 任意四座喷泉都不会构成某一个 \(2\times 2\) 正方形的四个顶点
子任务 \(6(30\%)\) : 没有额外的约束条件
你的输出还需要保证:
\(0 \leq m\leq 2n\)
\(0 \leq u[j],v[j]\leq n-1\)
\(1 \leq a[j],b[j]\leq 200\;001\) 且都是奇数
不能重复的连接两个喷泉,不能有相同位置的长椅。
由nodgd提供nkoj能用的SPJ