[UOJ#127][BZOJ4195][NOI2015]程序自动分析
[UOJ#127][BZOJ4195][NOI2015]程序自动分析
试题描述
在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足。
输入
输入文件的第1行包含1个正整数t,表示需要判定的问题个数。注意这些问题之间是相互独立的。
输出
输出文件包括t行。
输入示例
输出示例
NO
YES
数据规模及约定
1≤n≤1000000
1≤i,j≤1000000000
题解
离散化后,用个并查集,对于相等的两个变量把它们放在同一个连通块里,然后判断所有不等的条件中的两个元素是否在同一个连通块,在就输出 NO,否则输出 YES。
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cctype>
#include <algorithm>
using namespace std; const int BufferSize = 1 << 16;
char buffer[BufferSize], *Head, *Tail;
inline char Getchar() {
if(Head == Tail) {
int l = fread(buffer, 1, BufferSize, stdin);
Tail = (Head = buffer) + l;
}
return *Head++;
}
int read() {
int x = 0, f = 1; char c = Getchar();
while(!isdigit(c)){ if(c == '-') f = -1; c = Getchar(); }
while(isdigit(c)){ x = x * 10 + c - '0'; c = Getchar(); }
return x * f;
} #define maxn 100010 int fa[maxn<<1], cnt[2], num[maxn<<1], cntn;
struct Que {
int x, y;
Que() {}
Que(int _, int __): x(_), y(__) {}
} con[2][maxn]; int findset(int x) { return x == fa[x] ? x : fa[x] = findset(fa[x]); } int main() {
int T = read();
while(T--) {
int n = read();
cnt[0] = cnt[1] = cntn = 0;
for(int i = 1; i <= n; i++) {
int x = read(), y = read(), tp = read();
num[++cntn] = x; num[++cntn] = y;
con[tp][++cnt[tp]] = Que(x, y);
}
sort(num + 1, num + cntn + 1);
cntn = unique(num + 1, num + cntn + 1) - num - 1;
for(int i = 1; i <= cntn; i++) fa[i] = i;
for(int tp = 0; tp < 2; tp++)
for(int i = 1; i <= cnt[tp]; i++)
con[tp][i].x = lower_bound(num + 1, num + cntn + 1, con[tp][i].x) - num,
con[tp][i].y = lower_bound(num + 1, num + cntn + 1, con[tp][i].y) - num;
for(int i = 1; i <= cnt[1]; i++) {
int u = findset(con[1][i].x), v = findset(con[1][i].y);
if(u != v) fa[v] = u;
}
bool ok = 1;
for(int i = 1; i <= cnt[0]; i++) {
int u = findset(con[0][i].x), v = findset(con[0][i].y);
if(u == v){ ok = 0; break; }
}
puts(ok ? "YES" : "NO");
} return 0;
}
[UOJ#127][BZOJ4195][NOI2015]程序自动分析的更多相关文章
- BZOJ4195 [Noi2015]程序自动分析(离散化+并查集)
4195: [Noi2015]程序自动分析 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 689 Solved: 296 [Submit][Sta ...
- 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] 程序自动分析 [并查集,哈希,map] 题解
用并查集+离散化,注意:并查集数组大小不是n而是n*2 #include <iostream> #include <algorithm> #include <cstdio ...
- 【BZOJ4195】[Noi2015]程序自动分析 并查集
[BZOJ4195][Noi2015]程序自动分析 Description 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3 ...
- BZOJ-4195 NOI2015Day1T1 程序自动分析 并查集+离散化
总的来说,这道题水的有点莫名奇妙,不过还好一次轻松A 4195: [Noi2015]程序自动分析 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 836 ...
- codevs4600 [NOI2015]程序自动分析==洛谷P1955 程序自动分析
4600 [NOI2015]程序自动分析 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 在实现 ...
- Codevs 4600 [NOI2015]程序自动分析
4600 [NOI2015]程序自动分析 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 传送门 题目描述 Description 在实现程序自动分析的过程中,常常需 ...
随机推荐
- 增加和减少mongodb复制集中的节点
MongoDB Replica Sets不仅提供高可用性的解决方案,同时也提供负载均衡的解决方案,增减 Replica Sets节点在实际应用中非常普通.例如,当应用的读压力暴增时,3台节点的环境已不 ...
- SublimeREPL配置Python3开发
首先什么是REPL? A Read-Eval-Print-Loop (REPL) is available both as a standalone program and easily includ ...
- 最常见的 5 个导致节点重新启动、驱逐或 CRS 意外重启的问题 (文档 ID 1524455.1)
适用于: Oracle Database - Enterprise Edition - 版本 10.1.0.2 到 11.2.0.3 [发行版 10.1 到 11.2]本文档所含信息适用于所有平台 用 ...
- MVC 学习小总结
一般情况下新增字段首选现在数据库更新,然后再从数据库更新模型 第二选择是从模板添加字段更新数据库(面临删除所有数据可能,慎用) 第三是没有T4模板的前提下再模型完成操作然后修改model类防止mode ...
- ERROR 14856 --- [reate-882003853] com.alibaba.druid.pool.DruidDataSource : create connection error, url: jdbc:mysql://localhost:3306/xhb?useUnicode=true&characterEncoding=UTF-8, errorCode 1045, sta
ERROR 14856 --- [reate-882003853] com.alibaba.druid.pool.DruidDataSource : create connection error, ...
- crop层
A是要进行剪裁的blob,B是参考,C是由A剪裁出来的输出. 模式1和模式2不同在于offset,模式1中每个dimension可以不同,模式2中用一个值表示了所有dimension的值. axis表 ...
- 工程化---cnpm不是内部命令的解决
(1)问题描述 安装完,执行cnpm -v发现报出不是内部命令. 安装成功如下图: (2)解决方案: 之前配置过默认安装都会在D:\\nodejs\node_global中,所有我们cd 到 这个路径 ...
- Bootstrap 网格系统(Grid System)
Bootstrap 网格系统(Grid System) Bootstrap提供了一套响应式,移动设备优先的流式网格系统,随着屏幕或视口(viewport)尺寸的增加,系统会自动分为最多12列. 什么是 ...
- Log4J的配置与使用详解
一.简介 Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件.甚至是套接口服务器.NT的事件记录器.UNIX Syslog守护 ...
- ulimit 值超出允许范围导致无法登陆操作系统
在linux中,使用ulimit可以设置一些资源的使用限制. [root@root ~]# ulimit -a core file size (blocks, -c) unlimit ...