luogu#P8216. [THUPC2022 初赛] 画图
[THUPC2022 初赛] 画图
题目描述
一年两度的THUPC又要来了,小C和小Z作为参赛无数届的老选手,自然也要来凑一番热闹。不过因为已经是老年人了,参赛自然是免谈了,但是他们对THUPC几年不换的logo产生了审美疲劳,为了更好地吸引大家报名,他们打算重画一个更花里胡哨的。
笑死,你怎么可能指望两个宅男码农有丝毫的艺术细菌?
他们深知这件事不在自己的能力范围之内,于是打算写一个人工智障来帮自己来画logo!
经过不懈的努力,他们的人工智障终于能跑起来了,不过他们很快就发现这个人工智障比自己还没有艺术细菌——它只会在平面上画水平和竖直的线段来拼成“THUPC”字样!
不过程序写都写了,不用白不用。小C和小Z针对程序的这一特性进行深入研究后制定了这样的规则:
对于每一条水平线段,设其横坐标区间为 ,纵坐标为 ; 对于每一条竖直线段,设其纵坐标区间为 ,横坐标为 。上述所有数值均为整数,且满足。
“THUPC”字样应当由 条线段拼成,设其编号为 。对于每一个字母,规则如下:
字母"T"由 号水平线段和 号竖直线段组成,满足 。
字母"H"由 号竖直线段、 号水平线段和 号竖直线段组成,满足 。
字母"U"由 号竖直线段、 号水平线段和 号竖直线段组成,满足 。
字母"P"由 号竖直线段、 号水平线段、 号水平线段和 号竖直线段组成,满足 $d_9<y_{11}=d_{12}<u_9=y_{10}=u_{12},x_9=l_{10}=l_{11}<r_{10}=r_{11}=x_{12}$ 。
字母"C"由 号竖直线段、 号水平线段和 号水平线段组成,满足 $d_{13}=y_{15}<u_{13}=y_{14},x_{13}=l_{14}=l_{15}<r_{14}=r_{15}$ 。
生成的这 个字母可以排布在平面的任何地方而无需从左到右排列,但是组成任意两个不同字母的任意两条线段不得相交。
需要注意的是,人工智障给出的线段顺序可能并不按照上述编号顺序;另外,给出的线段可能出现同方向线段的首尾相连、重叠或包含,此时应将其视为连续的一整条线段。
只有生成的线段在连接和排序后符合上述规范,才认为人工智障生成了一幅正确的logo;否则,如果出现多余的线段、缺少某条线段或坐标不满足要求等情况均为不正确的。
最后,小C和小Z要写一个程序来检验人工智障的每一份输出结果是否符合上述规范,不过熬夜连肝三天的他们终于累得爬不起来了,于是他们请你来帮忙。
输入格式
第 行:一个正整数 表示线段的个数,保证 。
接下来 行,每行先输入一个整数 ,必定为 或 :如果 ,表示第 条线段为水平线段,接下来输入 个整数 描述这条线段,保证 ;如果 ,表示第 条线段为竖直线段,接下来输入 个整数 描述这条线段,保证 。
保证输入的坐标均在 范围内。
输出格式
如果符合规范,输出一个字符串 Yes
,否则输出一个字符串No
。
17
1 0 5 2
0 0 3 5
0 3 4 5
1 2 7 7
1 2 7 10
0 7 10 4
0 11 13 1
1 1 7 11
1 1 7 13
1 0 6 15
0 15 16 5
0 15 16 6
1 5 6 16
1 3 6 18
1 4 7 18
0 18 21 3
0 18 21 7
Yes
提示
【样例解释】
这组样例中,字母 T
的水平线段和 C
的竖直线段分别是由两条线段拼成的。