bzoj 4195
并查集水题
离散化之后直接并查集合并,在不等时判断两者是否在同一个集合內即可
注意排序
贴代码:
#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的更多相关文章
- BZOJ 4195: [Noi2015]程序自动分析 并查集+离散化
LUOGU 1955BZOJ 4195 题目描述 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3...代表程序中出现的变量 ...
- BZOJ 4195 程序自动分析
4195: [Noi2015]程序自动分析 Description 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3,-代表 ...
- bzoj 4195: [Noi2015]程序自动分析
4195: [Noi2015]程序自动分析 Description 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3,…代表 ...
- BZOJ——4195: [Noi2015]程序自动分析
http://www.lydsy.com/JudgeOnline/problem.php?id=4195 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: ...
- BZOJ 4195: [Noi2015]程序自动分析 [并查集 离散化 | 种类并查集WA]
题意: 给出若干相等和不等关系,判断是否可行 woc NOI考这么傻逼的题飞快打了一个种类并查集交上了然后爆零... 发现相等和不等看错了异或一下再叫woc90分 然后发现md$a \neq b, a ...
- 【刷题】BZOJ 4195 [Noi2015]程序自动分析
Description 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3,-代表程序中出现的变量,给定n个形如xi=xj或x ...
- bzoj 4195: [Noi2015]程序自动分析【并查集】
等于有传递性,所以hash一下把等于用并查集连起来,然后再判断不等于是否合法即可 #include<iostream> #include<cstdio> #include< ...
- BZOJ 4195: [Noi2015]程序自动分析 并查集 + 离散化 + 水题
TM 读错题了...... 我还以为是要动态询问呢,结果是统一处理完了再询问...... 幼儿园题,不解释. Code: #include<bits/stdc++.h> #define m ...
- bzoj 4195程序自动分析
先离散一下,然后并查集就好了. (一开始作大死,没全离散,WA一片) #include<bits/stdc++.h> #define INF 0x7fffffff #define LL l ...
- BZOJ刷题指南(转)
基础(65) 巨水无比(4):1214.3816:2B题:1000A+B:2462:输出10个1 模拟/枚举/暴力(15):4063傻子模拟:1968小学生暴力:1218前缀和暴力:3856读英文:4 ...
随机推荐
- springboot外部部署官方文档说明复制版
官方文档地址为: https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/htmlsingle/#boot-features-e ...
- hdu 4283You Are the One
The TV shows such as You Are the One has been very popular. In order to meet the need of boys who ar ...
- Python扩展(pybind11混编)
背景介绍pybind11是一个基于C++11标准的模版库. 与Boost.Python类似, pybind11主要着眼于创建C++代码的Python封装, 并为其提供了一套轻量级的解决方案. 安装与代 ...
- 在wsl 2中编译自己的魔趣(mokee) ROM
1.安装wsl2 a.在windows 10 系统中启用wsl2(只能是wsl2,wsl1 会编译失败), 并商店中下载ubuntu镜像,商店默认安装位置为C:\Program Files\Windo ...
- revit卸载工具,完全彻底卸载删除干净revit各种残留注册表和文件的方法和步骤。
revit卸载工具,完全彻底卸载删除干净revit各种残留注册表和文件的方法和步骤.如何卸载revit呢?有很多同学想把revit卸载后重新安装,但是发现revit安装到一半就失败了或者显示revit ...
- 【文献阅读】Automatic berthing for an underactuated unmanned surface vehicle: A real-time motion planning approach
(1)文章工作 This paper presents Extended Dynamic Window Approach (EDWA) for the automatic berthing of an ...
- python 第三方包大全
https://www.lfd.uci.edu/~gohlke/pythonlibs/ http://mirrors.aliyun.com/pypi/simple
- DRF的安装和基本增删查改的简单使用
1.app注册 2.建表 3.创建ser.py(重点) 4.views.py代码(重点) queryset:指明该视图集在查询数据时使用的查询集 serializer_class:指明该视图在惊醒序列 ...
- 官网jdk8,jdk11下载时需要登录Oracle账号的问题解决
当到这一步骤时先勾选同意,在这个下载按钮上点鼠标右键复制链接地址 文件的下载地址 我们需要把地址做些修改.把等号前面的地址删掉,然后找到等号后面地址中的otn后面加上-pub 然后把这个地址直接复制到 ...
- go语言的结构体、指针、方法详解
资源来自:https://blog.csdn.net/DXB2021/article/details/122652779 结体体定义如下: type author struct{ field1 typ ...