我有 n 个式子

对于每个式子,要么是 xi = xj 的形式,要么是 xi <> xj 的形式。

现在我给出这 n 个式子,你要告诉我,这 n 个式子是否可能同时成立。

【输入格式】

每个测试点有多组测试数据。

第一组有一个个整数 T ,表示测试数据的组数。

对于每一组组测试数据,第一行包含一个个正整数 n,表示式子的数目。

接下来 n 行,每行三个整数 i,j,e,描述n个式子。如果 e = 1,则这个式子

为 xi = xj 。如果 e = 0,则这个式⼦是 xi ̸= xj 。

【输出格式】

对于每组个测试数据输出。如果存在一种方案,使得所有的式子都被满足,

输出“YES”(不包含引号)。否则输出“NO”(不包含引号)。

样例输入 1

2

2

121

120

2

121

211

样例输出 1

NO

YES

6

样例输入 2

2

3

121

231

311

4

121

231

341

140

样例输出 2

YES

NO

【数据范围】

对于 20% 的数据,n ≤ 10。

对于 40% 的数据,n ≤ 100。

对于 70% 的数据,n ≤ 105,1 ≤ i, j ≤ 104。

对于 100% 的数据,n ≤ 105,1 ≤ i, j ≤ 109,1 ≤ t ≤ 10。

【解题思路】

这是一道比较水的NOI的题目,主要是并查集的应用,先排序,把等式放在一个并查集中,再去检查不等式,如有不满足,则输出'NO',全部满足输出'YES'。

单纯的并查集可以得90分,离散化之后就可以得满分(很显然,我并不会写)

 type eqq=record
l,r:Longint;
end;
var
eq,neq:array[..] of eqq;
ro:array[..] of longint;
sum,sum1,sum2,d,b,c,i,j,flag,t,n,w,max:Longint;
function root(x:Longint):Longint;
begin
if x=ro[x] then exit(x);
root:=root(ro[x]);
ro[x]:=root;
exit(root);
end; procedure union(x,y:Longint);
begin
ro[root(x)]:=root(y);
end; begin
assign(input,'prog.in'); reset(input);
assign(output,'prog.ans'); rewrite(output);
read(t);
for w:= to t do
begin
sum1:=; sum2:=; sum:=;flag:=; max:=;
read(n);
for i:= to n do
begin
read(d,b,c);
if d>max then max:=d;
if b>max then max:=b;
if c= then
begin
inc(sum1);
eq[sum1].l:=d;
eq[sum1].r:=b;
end;
if c<> then
begin
inc(sum2);
neq[sum2].l:=d;
neq[sum2].r:=b;
end;
end;
for i:= to max do ro[i]:=i;
for i:= to sum1 do
if root(eq[i].l)<>root(eq[i].r) then union(eq[i].l,eq[i].r);
for i:= to sum2 do
begin
if root(neq[i].l)<>root(neq[i].r) then continue
else
begin
flag:=;
break;
end;
end;
if flag= then writeln('NO') else writeln('YES');
end;
close(input); close(output);
end.

NOI 2015 T1 等式的更多相关文章

  1. NOI 2015 荷马史诗【BZOJ 4198】k叉Huffman树

    抱歉因为NOIP集训,好长时间没再写题解了. NOI 2015也就只有这道题一看就能懂了-- 4198: [Noi2015]荷马史诗 Time Limit: 10 Sec  Memory Limit: ...

  2. [LOJ 2134][UOJ 132][BZOJ 4200][NOI 2015]小园丁与老司机

    [LOJ 2134][UOJ 132][BZOJ 4200][NOI 2015]小园丁与老司机 题意 给定平面上的 \(n\) 个整点 \((x_i,y_i)\), 一共有两个问题. 第一个问题是从原 ...

  3. [LOJ 2133][UOJ 131][BZOJ 4199][NOI 2015]品酒大会

    [LOJ 2133][UOJ 131][BZOJ 4199][NOI 2015]品酒大会 题意 给定一个长度为 \(n\) 的字符串 \(s\), 对于所有 \(r\in[1,n]\) 求出 \(s\ ...

  4. NOI 2015 滞后赛解题报告

    报同步赛的时候出了些意外.于是仅仅能做一做"滞后赛"了2333 DAY1 T1离线+离散化搞,对于相等的部分直接并查集,不等部分查看是否在同一并查集中就可以,code: #incl ...

  5. [NOI 2015]品酒大会

    Description 题库链接 \(n\) 杯鸡尾酒排成一行,其中第 \(i\) 杯酒 (\(1 \leq i \leq n\)) 被贴上了一个标签 \(s_i\),每个标签都是 \(26\) 个小 ...

  6. BZOJ 4197 NOI 2015 寿司晚宴 状压DP

    4197: [Noi2015]寿司晚宴 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 694  Solved: 440[Submit][Status] ...

  7. 【UOJ #131】【NOI 2015】品酒大会

    http://uoj.ac/problem/131 求出后缀数组和height数组后,从大到小扫相似度进行合并,每次相当于合并两个紧挨着的区间. 合并区间可以用并查集来实现,每个区间的信息都记录在这个 ...

  8. 【NOI 2015网络同步赛】

    今年没法去.. 分数160+181+100(假设我有去考笔试)=441 分数线:金548 银459 铜331 并没有到银牌线.... 以后题目啊数据啊出来的话继续更新 2015.7.19

  9. BZOJ 4197 NOI 2015 寿司晚宴

    题面 Description 为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴.小 G 和小 W 作为参加 NOI 的选手,也被邀请参加了寿司晚宴. 在晚宴上,主办方为大家提供了 n−1 ...

随机推荐

  1. C# 之 OpenFileDialog的使用

    一.打开文件对话框(OpenFileDialog) 1. OpenFileDialog控件有以下基本属性 [1]InitialDirectory:对话框的初始目录 [2]Filter:要在对话框中显示 ...

  2. (inline)内联函数在IOS开发中的使用

    今天在阅读YYKit源码(https://github.com/ibireme/YYKit.git)时发现在YYKitMacro.h组件中大量使用的内联函数,例如此文件中的一个函数 static in ...

  3. 警告:Pointer is missing a nullability type specifier (__nonnull or __nullable)

    当我们定义某个属性的时候  如果当前使用的编译器版本比较高(6.3+)的话经常会遇到这样一个警告: 而且奇怪的是在某些文件中定义这个属性是没有任何警告的 但是在某些文件中定义同样的属性就会报错: 其实 ...

  4. Python 基础【第五篇】元组和列表

    一 .Python之列表: 其实所谓的列表我个人感觉和shell 中的数组是一样的(只是个人见解哦),列表其实说白了就是元素的组合: 格式: Name = [a,b,c,d] 下标: 每一个列表中的元 ...

  5. 关于Git的暂存区这个概念的理解.

    Git中的暂存区成为stage或者是index.可以理解成一个"提交任务".Git暂存区是Git最成功的设计之一,但是也是最难理解的. 暂存区是一个介于工作区和版本库的中间状态.当 ...

  6. OpenWebFlow0.9用户手册与设计说明

    1.    OpenWebFlow概述 OpenWebFlow是基于Activiti扩展的工作流引擎.Activiti (官方网站http://activiti.org/,代码托管在https://g ...

  7. Cordova+angularjs+ionic+vs2015开发(四)

    欢迎加群学习:457351423 这里有4000多部学习视频,涵盖各种技术,有需要的欢迎进群学习! 一.布局 Ionic模板提供了一个侧边栏菜单示例项目和标签选项卡示例项目.本案例将两个布局进行结合, ...

  8. ASP.NET验证控件详解

    现在ASP.NET,你不但可以轻松的实现对用户输入的验证,而且,还可以选择验证在服务器端进行还是在客户端进行,再也不必考虑那么多了,程序员们可以将重要精力放在主程序的设计上了. ASP.NET公有六种 ...

  9. list,tuple,dict,字符串常用知识总结

    创建列表 sample_list = ['a',1,('a','b')] Python 列表操作 sample_list = ['a','b',0,1,3] 得到列表中的某一个值 value_star ...

  10. WEB系统技术开发方向

    1. UI框架:要可以结合jquery+自定义服务器控件开发一套UI框架: 2.WEB报表设计器:用js开发一套可以自定义报表设计器: 3.WEB自定义表单+工作流设计器: 4.WEB打印组件: 5. ...