【luogu P1955 [NOI2015]程序自动分析】 题解
题目链接:https://www.luogu.org/problemnew/show/P1955
并查集操作,1e9要离散化,数组要开大一些,操作前先执行合并操作
样例好毒啊(全是排好序的)
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 100010;
int fa[maxn], n, flag, T, b[maxn];
struct node{
int x, y, e;
}a[maxn];
bool cmp(node a, node b)
{
return a.e > b.e;
}
int find(int x)
{
return fa[x] == x ? x : fa[x] = find(fa[x]);
}
void init(int n)
{
for(int i = 1; i <= n; i++) fa[i] = i;
}
int main()
{
scanf("%d",&T);
while(T--)
{
int tot = 0;
memset(a, 0, sizeof(a));
memset(b, 0, sizeof(b));
memset(fa, 0, sizeof(fa));
scanf("%d",&n);
for(int i = 1; i <= n; i++)
{
scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].e);
b[++tot] = a[i].x;
b[++tot] = a[i].y;
}
sort(b + 1, b + 1 + tot);
int m = unique(b + 1, b + 1 + tot) - b;
for(int i = 1; i <= n; i++)
{
a[i].x = lower_bound(b + 1, b + 1 + m, a[i].x) - b;
a[i].y = lower_bound(b + 1, b + 1 + m, a[i].y) - b;
}
init(m);
sort(a+1, a+1+n, cmp);
for(int i = 1; i <= n; i++)
{
flag = 1;
int fx = find(a[i].x), fy = find(a[i].y);
if(a[i].e == 1)
{
fa[fx] = fy;
}
else
{
if(fx == fy)
{
printf("NO\n");
flag = 0;
break;
}
}
}
if(flag) printf("YES\n");
}
return 0;
}
【luogu P1955 [NOI2015]程序自动分析】 题解的更多相关文章
- Luogu P1955 [NOI2015]程序自动分析
又一次做了这道题,感慨万千. 记得寒假时,被cmd2001点起来讲这道题,胡言乱语..受尽鄙视(现在也是好吗)..后来下课想A掉,可是3天下来总是错...后来抄了分题解就咕咕了... 今天老师留了这道 ...
- 洛谷 P1955 [NOI2015]程序自动分析 题解
每日一题 day22 打卡 Analysis 离散化+并查集 先离散化所有的约束条件,再处理所有e=1的条件,将i的祖先和j的祖先合并到一个集合中:e=0时,如果i的祖先与j的祖先在同一个集合中,说明 ...
- P1955 [NOI2015]程序自动分析
题目描述 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3...代表程序中出现的变量,给定n个形如xi=xj或xi≠xj的变 ...
- 洛谷P1955 [NOI2015] 程序自动分析 [并查集,离散化]
题目传送门 题目描述 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3...代表程序中出现的变量,给定n个形如xi=xj或x ...
- 洛谷p1955[NOI2015]程序自动分析
题目: 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3...代表程序中出现的变量,给定n个形如xi=xj或xi≠xj的变量 ...
- P1955 [NOI2015]程序自动分析[离散化+并查集]
大水题一道,不明白为什么你谷评了个蓝.一看就是离散化,先去满足相等的条件,相等即为两点联通,或者说在同一个集合内.再看不相等,只有两元素在同一集合才不满足.裸的disjoint-set直接上,常数巨大 ...
- 【做题笔记】洛谷P1955[NOI2015]程序自动分析
第一道蓝题祭- 注意到本题中判断的是下标,即,并不是真的判断 \(i\) 是否等于 \(j\) 显然考虑并查集,把所有标记为"相等"的数放在一个集合里,然后最后扫一遍每个数,如果有 ...
- codevs4600 [NOI2015]程序自动分析==洛谷P1955 程序自动分析
4600 [NOI2015]程序自动分析 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 在实现 ...
- 【BZOJ4195】[Noi2015]程序自动分析 并查集
[BZOJ4195][Noi2015]程序自动分析 Description 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3 ...
随机推荐
- 《JavaWeb从入门到改行》很好的复习资料: SQL语句到底怎么写 ?
本文用到的数据库如下: CREATE DATABASE exam; /创建部门表/ CREATE TABLE dept( deptno INT PRIMARY KEY, dname ), loc ) ...
- web杂记-禁止输入框自动填充文字
1:背景 公司基于业务需求开发了一套纯JS的时间控件,本来用得好好得.后来发现在部分浏览器下使用该时间控件会出现输入框自动填充的部分与控件的展示产生了冲突: 如图: 2:问题分析 因为部分浏览太人性化 ...
- git杂记-撤销操作
覆盖上一次的提交或重新更新提交说明 $ git commit --amend -m '我再次提交啦,上一次的提交已经不见啦.这是一个危险的操作哦.哈哈,其实并不危险,也是可以数据恢复的啦' 取消已暂存 ...
- git杂记-记录每次更新到仓库
git status 和 git diff的运用 git status 记录的是关于仓库文件是否有变更,例如是否被修改,是否被添加到暂村区.至于文件更改了什么内容该命令并不关心: git status ...
- wget 抓取整站
wget -r -p -np -k http://doc.code365.net/Manual/FreeBSD_Arch_HandBook/ -r 递归 -p, --page-requisites(页 ...
- 通过Application存取公共数据比如登录信息等..
Android系统在运行每一个程序应用的时候,都会创建一个Application对象,用于存储与整个应用相关的公共变量.一个Android应用只会生成一个Application对象,在不同的Activ ...
- 媒体查询hack
随着Responsive设计的流行,Medial Queries可算是越来越让人观注了.他可以让Web前端工程实现不同设备下的样式选择,让站点在不同的设备中实现不同的效果.这个早前在 w3cplus已 ...
- Hbase集群部署
1.安装Hadoop集群 这个之前已经写过 2.安装Zookeeper 这个之前也已经写过 3.下载hbase,放到master机器,解压 4.修改hbase-env.sh,添加Java地址 expo ...
- JDK1.7环境
官方下载页面: http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-52126 ...
- xml-treeview转换
XML——>treeciew using System; using System.Collections.Generic; using System.Text; using System.Wi ...