【并查集+离散化】BZOJ4195- [Noi2015]程序自动分析
【题目大意】
在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
const int MAXN=+;
struct node
{
int num;
int oripos;
int ab;//0a1b
bool operator < (const node &x) const
{
return num<x.num;
}
}que[MAXN];
int h[MAXN],u[MAXN];
int n,a[MAXN],b[MAXN],e[MAXN]; void union_set(int a,int b)
{
if (h[a]>=h[b])
{
u[b]=a;
if (h[a]==h[b]) h[a]++;
}
else u[a]=b;
} int find(int x)
{
int r=x;
while (u[r]!=r) r=u[r];
int p=x;
while (u[p]!=p)
{
int tmp=u[p];
u[p]=r;
p=tmp;
}
return r;
} void init()
{
scanf("%d",&n);
int qlen=-;
for (int i=;i<n;i++)
{
scanf("%d%d%d",&a[i],&b[i],&e[i]);
que[++qlen].num=a[i];
que[qlen].oripos=i;
que[qlen].ab=;
que[++qlen].num=b[i];
que[qlen].oripos=i;
que[qlen].ab=;
}
sort(que,que+*n);
int j=;
for (int i=;i<*n;i++)
{
if (i!= && que[i].num!=que[i-].num) j++;
if (que[i].ab==) a[que[i].oripos]=j;
else b[que[i].oripos]=j;
}
memset(h,,sizeof(h));
for (int i=;i<=*(n+);i++) u[i]=i;
} int judge()
{
for (int i=;i<n;i++)
if (e[i])
{
union_set(find(a[i]),find(b[i]));
}
for (int i=;i<n;i++)
if (!e[i])
{
int fa=find(a[i]),fb=find(b[i]);
if (fa==fb) return ;
}
return ;
} int main()
{
int T;
scanf("%d",&T);
while (T--)
{
init();
int j=judge();
if (j) cout<<"YES"<<endl;else cout<<"NO"<<endl;
}
return ;
}
【并查集+离散化】BZOJ4195- [Noi2015]程序自动分析的更多相关文章
- [UOJ#127][BZOJ4195][NOI2015]程序自动分析
[UOJ#127][BZOJ4195][NOI2015]程序自动分析 试题描述 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2, ...
- BZOJ4195 [Noi2015]程序自动分析(离散化+并查集)
4195: [Noi2015]程序自动分析 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 689 Solved: 296 [Submit][Sta ...
- [Bzoj4195] [NOI2015] 程序自动分析 [并查集,哈希,map] 题解
用并查集+离散化,注意:并查集数组大小不是n而是n*2 #include <iostream> #include <algorithm> #include <cstdio ...
- BZOJ4195 NOI2015 程序自动分析
4195: [Noi2015]程序自动分析 Time Limit: 10 Sec Memory Limit: 512 MB Description 在实现程序自动分析的过程中,常常需要判定一些约束条件 ...
- [BZOJ4195] [NOI2015] 程序自动分析 (并查集)
Description 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3,…代表程序中出现的变量,给定n个形如xi=xj或x ...
- bzoj4195 [Noi2015]程序自动分析——并查集
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4195 突然在这道大水题上WA了半天... 思路很简单,离线处理询问,先把 = 的都加到并查集 ...
- 【BZOJ4195】[Noi2015]程序自动分析 并查集
[BZOJ4195][Noi2015]程序自动分析 Description 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3 ...
- BZOJ-4195 NOI2015Day1T1 程序自动分析 并查集+离散化
总的来说,这道题水的有点莫名奇妙,不过还好一次轻松A 4195: [Noi2015]程序自动分析 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 836 ...
- [NOI2015]程序自动分析(并查集,离散化)
[NOI2015]程序自动分析 Description 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3,-代表程序中出现的 ...
随机推荐
- ACM模板~求第k短路 ~~~A*+Dijkstra
#include <map> #include <set> #include <cmath> #include <ctime> #include < ...
- Jquery 获取checkbox的checked问题以及解决方案
转载自:http://www.cnblogs.com/-run/archive/2011/11/16/2251250.html 这个郁闷了,今天写这个功能的时候发现了问题,上网找了好多资料对照,更加纠 ...
- windows下maven打包eclipse工程
打包过程中,可能出现的2个问题: ①.[WARNING] File encoding has not been set, using platform encoding GBK, i.e. build ...
- django 连接 oracle 问题
安装 oracle 后,在 django 项目中连接出现问题记录. 问题1:pip install cx_Oacle 未出现任何问题,但运行过程出现: 原因:连接 oracle 的工具 cx_Orac ...
- 学习正则表达式及c#应用
1.0正则表达式语法 正则表达式是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”).模式描述在搜索文本时要匹配的一个或多个字符串. 正则表达式示例 表达式 ...
- bzoj 1060 贪心
设根到每个叶子节点的距离为dis,比较容易的看出来,我们需要把这颗树的所有叶子节点的值都变成其中最大的内个,我们设为max,那么对于一颗子树来说,设其中dis值最大的为x,我们需要将这个子树根节点和子 ...
- Linux eject弹出光驱
Linux eject命令用于退出抽取式设备. 若设备已挂入,则eject会先将该设备卸除再退出. 语法 eject [-dfhnqrstv][-a <开关>][-c <光驱编号&g ...
- 转:Android 的一些比较好的开源代码项目
转自:http://blog.csdn.net/zengyangtech/article/details/7019439 Android PDF 阅读器 http://sourceforge.net/ ...
- apparmor开启
- Linux下查看使用的是哪种shell的方法汇总【转】
转自:http://www.jb51.net/LINUXjishu/247797.html 查看当前发行版可以使用的shell 复制代码 代码如下: [root@localhost ~]$ cat / ...