TouchStone
  请登录后使用
登录 注册
 系统首页  练习题库  考试列表  判题结果  信息发布  解题排行
  • 首页
  • 题库
  • P8331
  • 题目
  • P8331[IOI2021] 喷泉公园(parks)
    限制 : 时间限制 : - MS   空间限制 : 1048576 KB  SPJ
    评测说明 : 3s,1GB
    问题描述

    在附近一个公园里,有 \(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