#H. 琬琬学姐手把手教你写冒泡排序

    传统题 1000ms 256MiB

琬琬学姐手把手教你写冒泡排序

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目背景

题目虽然长了一点,但是这真的是一道简单题!!!

众所周知,琬琬不是婉婉,宛宛,绾绾,碗碗,婠婠,菀菀,莞莞……善良的琬琬曾经教过学弟学妹们怎么写一道可爱的冒泡,可是,总有一些恶毒的人贬低琬琬,总想偷偷用sort去取代诚心想考冒泡的琬琬。为此,善良的琬琬决定把sort的知识直接告诉大家,这样大家就都可以写出来题啦!!!快来感谢善良的琬琬吧!!!

image

题目描述

在c++标准库中,存在一个叫做std::sort的函数,它可以默认按照升序的方式排序,或者按照一种给定的自定义方式排序。

学弟学妹们在使用自定义比较函数进行sort时,经常会因为没有遵守sort传入比较函数的约定而导致代码崩溃。

具体来讲,使用sort时需要定义一个比较函数cmp(x,y),他表示比较在排序的过程中x的顺序是否严格小于y的顺序,如果x的顺序严格小于y的顺序,则cmp(x,y)=1,反之cmp(x,y)=0。

学弟学妹们在编写cmp函数时的一个易错点是在x和y的值相等时令cmp(x,y)=1,例如降序排序时将x>y写成了x≥y。

抛开c++语言的底层实现,这样其实已经产生了逻辑矛盾。因为当x和y的值相等时cmp(x,y)=cmp(y,x)=1,在调用约定中,它表示在排序中x的顺序严格小于y且y的顺序严格小于x,显然这里产生了逻辑矛盾。所以此时无论c++库函数执行出任何的结果都是可能的,一般来讲这将导致运行错误。

所以在编写cmp(x,y)时,一定要注意,当x和y的值相等时,应该令cmp(x,y)=cmp(y,x)=0,这表示通知排序函数,不能确定在排序中x的顺序严格小于y,同时也不能确定y的顺序严格小于x,当然,从逻辑上讲,这只有一种情况,就是x=y,并未产生任何逻辑矛盾。

现在有三个整形变量 a1,a2,a3a1,a2,a3(你可以认为这三个变量的值是 int 范围内任意的整数),告诉你 NN 组cmp(ax,ay)的值,问是否产生了逻辑矛盾。

输入格式

第一行输入一个正整数 TT (1T2×1041≤T≤2×10^4)表示测试用例的组数。

对于每组测试用例,第一行输入一个正整数 NN (1N21≤N≤2) 表示约束条件的数目,接下来 NN 行,每行输入三个整数 x,y,zx,y,z ( x,yx,y∈ {1,2,31,2,3} ,z0,1,z∈0,1 )表示第 ii 个约束关系为 cmpcmp (ax,ayax,ay) =z=z

输出格式

对于每组测试用例,若没有矛盾,则输出 YesYes,否则输出 NoNo

样例

1
2
1 2 1
2 1 1
No
1
2
1 2 1
1 2 1
Yes
3
1
1 1 0
1
1 1 1
2
1 2 0
1 2 1
Yes
No
No

样例说明

在第一个样例中,两个变量 a1<a2a1<a2 成立且 a2<a1a2<a1 成立,矛盾,输出 NoNo

在第二个样例中,注意输入的约束可能会重复,并不要求输入的约束条件能够完全将三者排序,仅要求不产生矛盾就输出 YesYes ;

在第三个样例中,注意输入的 xxyy 可以相等

题目限制

时间限制:C/C++ 1秒

空间限制:C/C++ 262144K

2024ACM新生积分赛 Round #3

未参加
状态
已结束
规则
ACM/ICPC
题目
13
开始于
2024-10-26 13:00
结束于
2024-10-26 18:15
持续时间
5.3 小时
主持人
参赛人数
39