琬琬学姐手把手教你写冒泡排序
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
题目背景
题目虽然长了一点,但是这真的是一道简单题!!!
众所周知,琬琬不是婉婉,宛宛,绾绾,碗碗,婠婠,菀菀,莞莞……善良的琬琬曾经教过学弟学妹们怎么写一道可爱的冒泡,可是,总有一些恶毒的人贬低琬琬,总想偷偷用sort去取代诚心想考冒泡的琬琬。为此,善良的琬琬决定把sort的知识直接告诉大家,这样大家就都可以写出来题啦!!!快来感谢善良的琬琬吧!!!
题目描述
在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,并未产生任何逻辑矛盾。
现在有三个整形变量 (你可以认为这三个变量的值是 int 范围内任意的整数),告诉你 组cmp(ax,ay)的值,问是否产生了逻辑矛盾。
输入格式
第一行输入一个正整数 ()表示测试用例的组数。
对于每组测试用例,第一行输入一个正整数 () 表示约束条件的数目,接下来 行,每行输入三个整数 ( {} )表示第 个约束关系为 () 。
输出格式
对于每组测试用例,若没有矛盾,则输出 ,否则输出 。
样例
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
样例说明
在第一个样例中,两个变量 成立且 成立,矛盾,输出 ;
在第二个样例中,注意输入的约束可能会重复,并不要求输入的约束条件能够完全将三者排序,仅要求不产生矛盾就输出 ;
在第三个样例中,注意输入的 和 可以相等
题目限制
时间限制: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