并查集水题

离散化之后直接并查集合并,在不等时判断两者是否在同一个集合內即可

注意排序

贴代码:

#include <cstdio>
#include <cmath>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <queue>
#include <stack>
#include <map>
using namespace std;
map <int,int> M1,M2;
int tot=0;
int T,n;
struct Ques
{
int l,r,typ;
friend bool operator < (Ques a,Ques b)
{
return a.typ>b.typ;
}
}q[100005];
int f[200005];
int siz[200005];
int findf(int x)
{
return x==f[x]?x:f[x]=findf(f[x]);
}
void init()
{
M1.clear(),M2.clear(),tot=0;
for(int i=1;i<=2*n;i++)f[i]=i,siz[i]=1;
}
inline int read()
{
int f=1,x=0;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*f;
}
int main()
{
T=read();
while(T--)
{
n=read();init();
for(int i=1;i<=n;i++)
{
q[i].l=read(),q[i].r=read(),q[i].typ=read();
M1[q[i].l]=M1[q[i].r]=1;
}
sort(q+1,q+n+1);
map <int,int>::iterator it;
for(it=M1.begin();it!=M1.end();it++)M2[it->first]=++tot;
for(int i=1;i<=n;i++)q[i].l=M2[q[i].l],q[i].r=M2[q[i].r];
bool fl=0;
for(int i=1;i<=n;i++)
{
int f1=findf(q[i].l),f2=findf(q[i].r);
if(q[i].typ==1&&f1!=f2)
{
if(siz[f1]>siz[f2])f[f2]=f1,siz[f1]+=siz[f2];
else f[f1]=f2,siz[f2]+=siz[f1];
}
else if(q[i].typ==0&&f1==f2){fl=1;break;}
}
if(fl)printf("NO\n");
else printf("YES\n");
}
return 0;
}

bzoj 4195的更多相关文章

  1. BZOJ 4195: [Noi2015]程序自动分析 并查集+离散化

    LUOGU 1955BZOJ 4195 题目描述 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3...代表程序中出现的变量 ...

  2. BZOJ 4195 程序自动分析

    4195: [Noi2015]程序自动分析 Description 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3,-代表 ...

  3. bzoj 4195: [Noi2015]程序自动分析

    4195: [Noi2015]程序自动分析 Description 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3,…代表 ...

  4. BZOJ——4195: [Noi2015]程序自动分析

    http://www.lydsy.com/JudgeOnline/problem.php?id=4195 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: ...

  5. BZOJ 4195: [Noi2015]程序自动分析 [并查集 离散化 | 种类并查集WA]

    题意: 给出若干相等和不等关系,判断是否可行 woc NOI考这么傻逼的题飞快打了一个种类并查集交上了然后爆零... 发现相等和不等看错了异或一下再叫woc90分 然后发现md$a \neq b, a ...

  6. 【刷题】BZOJ 4195 [Noi2015]程序自动分析

    Description 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3,-代表程序中出现的变量,给定n个形如xi=xj或x ...

  7. bzoj 4195: [Noi2015]程序自动分析【并查集】

    等于有传递性,所以hash一下把等于用并查集连起来,然后再判断不等于是否合法即可 #include<iostream> #include<cstdio> #include< ...

  8. BZOJ 4195: [Noi2015]程序自动分析 并查集 + 离散化 + 水题

    TM 读错题了...... 我还以为是要动态询问呢,结果是统一处理完了再询问...... 幼儿园题,不解释. Code: #include<bits/stdc++.h> #define m ...

  9. bzoj 4195程序自动分析

    先离散一下,然后并查集就好了. (一开始作大死,没全离散,WA一片) #include<bits/stdc++.h> #define INF 0x7fffffff #define LL l ...

  10. BZOJ刷题指南(转)

    基础(65) 巨水无比(4):1214.3816:2B题:1000A+B:2462:输出10个1 模拟/枚举/暴力(15):4063傻子模拟:1968小学生暴力:1218前缀和暴力:3856读英文:4 ...

随机推荐

  1. kuangbin学习

    是有针对性的对于算法的训练 我试试QAQ

  2. IO基础知识与概念

    https://zhuanlan.zhihu.com/p/473639031

  3. [转]C#的反射

    一.反射简介 1.1.反射的说明 反射:指程序可以访问.检测和修改它本身状态或行为的一种能力(即:审查元数据并收集关于它的类型信息的能力). ①元数据(编译以后的最基本数据单元:指程序和程序类型本身的 ...

  4. 查看oracle死锁

    select A.sid, b.serial#, decode(A.type, 'MR', 'Media Recovery', 'RT','Redo Thread', 'UN','User Name' ...

  5. 使用Github或Gitlab的Webhooks实现代码自动更新部署(Ubuntu20.04)

    1.安装ssh服务root@Ubuntu:~# apt-get install openssh-server 2.部署phproot@Ubuntu:~# add-apt-repository ppa: ...

  6. 浅谈JS中的element.style和window.getComputedStyle()的区别

    MDN对于element.style的解释 被高光的句子中的inline style属性是指css内联样式,即元素的style属性的属性值 总结一下,element.style只能获取到元素的styl ...

  7. k8s_使用k8s部署博客系统deployment(四)

    mysql deployment 前面的nfs  pv pvc secret configmap service等k8s对象已经创建好了,准备工作已经完成:现在可以开始准备deployment配置文件 ...

  8. Echarts实现不均匀刻度的方法,自定义刻度(转)

    原文地址 今天突然有个我们的咨询公司找我问一个echarts问题,这个问题确实值得一解决,很有意思. 问题是这样的.数据中有很多低于100的数值,但是最高值却能达到14000. data = [93. ...

  9. js 判断gps是否超出设定范围

    var CKposition = { //经纬度转换成三角函数中度分表形式 rad: function (d) { return d * Math.PI / 180.0; }, // 根据经纬度计算距 ...

  10. go标准库之fmt

    go标准库之fmt fmt库 Print系列 1. Print 不换行 2. Println 换行 3. Printf 不换行,可以使用格式化占位符 格式化占位符 占位符 说明 通用 --- %v 值 ...