【并查集+离散化】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,-代表程序中出现的 ...
随机推荐
- function(data)
转:http://blog.csdn.net/lixld/article/details/12206367 之前用了$.post()已经很久了,可是从来没有好好研究过这里的data对象,今天好好总结下 ...
- tengine的安装
tengine的安装参考此博文: http://www.cnblogs.com/zlslch/p/6035145.html (1)下载tengine的压缩包 (2)解压缩 (3)进入目录./confi ...
- js+json实现ajax实例
前期准备: 安装wampserver或者其他相似软件来搭建本地集成安装环境 html.js.css等文件需要放置在wampserver中的www目录中,默认运行index页面 bootstrap.cs ...
- jquery遍历之后代
向下遍历dom树的jquery方法 children()方法返回被选元素的所有直接子元素,只会对向下一级对dom树进行遍历. 例子 代码: $(document).ready(function(){ ...
- Junit使用的超简单介绍
Junit使用的超简单介绍 前言:我对Junit了解的并不多,只是今天突然听到有人提到了它,而且现在时间还早,所以我觉得我不妨更一篇关于Junit4的超级超级简单的用法,全当是为了省去看官网demo的 ...
- 粉刷匠(bzoj 1296)
Description windy有 N 条木板需要被粉刷. 每条木板被分为 M 个格子. 每个格子要被刷成红色或蓝色. windy每次粉刷,只能选择一条木板上一段连续的格子,然后涂上一种颜色. 每个 ...
- redis连接池自动释放
http://blog.itpub.net/29485627/viewspace-1977880/
- 【BZOJ 3907】网格(Catalan数)
题目链接 这个题推导公式跟\(Catalan\)数是一样的,可得解为\(C_{n+m}^n-C_{n+m}^{n+1}\) 然后套组合数公式\(C_n^m=\frac{n!}{m!(n-m)!}\) ...
- logging模块的使用
# -*- coding: utf-8 -*- import os import time import logging import sys log_dir1=os.path.join(os.pat ...
- SPOJ - AMR11H
Array Diversity Time Limit: 404MS Memory Limit: 1572864KB 64bit IO Format: %lld & %llu Submi ...