#P4125. [WC2012] 记忆中的水杉树

    ID: 3063 Type: RemoteJudge 3000ms 125MiB Tried: 0 Accepted: 0 Difficulty: 7 Uploaded By: Tags>计算几何2012线段树WC/CTSC/集训队Special Judge拓扑排序

[WC2012] 记忆中的水杉树

题目描述

江苏省常州高级中学是一所百年名校,这里萦绕着无数人难以忘怀的回忆。WillWill 记得,在他小的时候,常州高级中学改建以前,学校里有一片高大的水杉林,每到水杉落叶之时,针状的叶子会像毯子一样盖在地上,走在上面浪漫而又闲适。那时,WillWill 和同学们还喜欢用这些针叶,在水杉树下,玩“取叶子”的游戏。 游戏一开始,大家先将 nn 片针叶平铺在地上。接着,每一轮可以有一个同学选择一片针叶,按水平或者垂直方向将针叶移走(也就是平移到无穷远处)——当然,前提是移动过程中不被任何尚未移走的针叶所阻碍。如果某一轮针叶的移动会被阻碍,那么这次移动就是非法的,是不被允许的。nn轮过后,当针叶都被移走时,游戏也就结束了。 针叶并不是任何时刻都可以被移动的。当针叶很多的时候,判断每一轮中一片针叶是否可以按一个特定的方向移动是一件很麻烦的事情。 现在我们将地面抽象为平面直角坐标系,nn 片针叶抽象为平面上 nn 条互不相交的线段,并将其从11nn编号,WillWill 还将给出每一轮游戏中,他想要移动的针叶编号以及移动方向,请你帮助他:

11.找出最早的一次非法移动出现在哪一轮;

22.给出一个合法的移动方案完成这个游戏。

注意:在线段移动时仅端点接触不会造成阻碍,具体请参见样例。

输入格式

输入文件的第一行包含一个正整数nn,表示针叶的数量。

接下来nn行,每行44个整数,描述针叶的位置信息。其中第 ii 行的整数为 aia_ibib_icic_idid_i,表示编号为 ii 的针叶所抽象成的线段的端点为(ai,bi)(a_i, b_i)(ci,di)(c_i, d_i)

接下来 nn 行,每行 22 个整数,描述移动操作。其中第 ii 行的整数为 pip_iqiq_i,表示第 ii 轮移动的针叶编号为 pip_i,方向为 qiq_i。其中 qiq_i为一个 0033 之间的整数,00 表示向左平移(即 xx 轴负方向) ,11 表示向上平移(即 yy 轴正方向) ,22 表示向右平移,33 表示向下平移。

输入数据保证:

○所有线段长度为正,两两之间没有公共点,且不存在垂直或者水平的线段;

p1p_1pnp_n恰好组成一个11nn的排列;

WillWill所给出的移动操作中一定存在非法移动;

nn轮均合法的移动操作总是存在的。

输出格式

输出文件一共包含nn + 11行。

输出的第一行包含一个11nn之间的整数,表示最早出现非法移动的是哪一轮。

接下来nn行,每行两个整数,内容同输入格式所述,描述一个合法的移动序列。

5 
2 5 5 8 
2 1 3 5 
5 2 6 5 
7 0 4 2 
3 1 4 0 
2 0 
3 0 
4 0 
1 2 
5 1 
3 
2 0 
3 0 
4 3 
1 2 
5 1 
4
-1 1 2 3
13 5 9 8
10 10 15 14
10 17 0 20
3 1
2 1
1 1

4 1
2
4 1
3 1
2 1
1 1

提示

【样例说明】

WillWill 给出的移动方案的第33轮中,编号为44的针叶向左移动会被编号为55的针叶阻碍。

【数据范围】

具体数据范围见下表。

QQ20180116204421.png

对于一个测试点:

如果非法移动判断正确,但是给出的方案错误,可以得到 55 分。此时会提示:An invalid move in step

如果非法移动判断错误,但是给出的方案正确,可以得到 55 分。此时会提示:Negative error detection!

如果非法移动的判断与给出方案均正确,则可以得到 1010 分;

否则,得 00 分。

如果程序的输出格式不正确,将被直接判作输出格式不正确,将被直接判作 00 分。