题意:给定n个(xi = xj) 或 (xi != xj) 的条件,问是否可能成立

BZOJ链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4195

luogu链接:https://www.luogu.org/problemnew/show/P1955

离散化+并查集

离线,先把(xi = xj)用并查集解决,再一个一个判断不等的是否矛盾

一开始用map离散化结果TLE

emm

 #include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<map>
#include<vector> using namespace std; const int MAXN = ;
int n, kx;
int fa[MAXN * ], size[MAXN * ], s[MAXN * ];
vector< pair<int, int> > tf, li; template <typename tn> void read (tn & a) {
tn x = , f = ;
char c = getchar();
while (c < '' || c > ''){ if (c == '-') f = -; c = getchar(); }
while (c >= '' && c <= ''){ x = x * + c - ''; c = getchar(); }
a = f == ? x : -x;
} int find (int x) {
if (fa[x] == x) return x;
return fa[x] = find(fa[x]);
} void link (int x, int y) {
x = find(x);
y = find(y);
if (x == y) return;
if (size[x] > size[y]) { link(y, x); return; }
fa[x] = y;
size[y] += size[x];
} int ge (int x) {
int left = , right = kx + ;
while (left < right - ) {
int mid = (left + right) / ;
if (s[mid] > x) right = mid; else left = mid;
}
if (s[left] == x) return left; else return left + ;
} int main() {
int T;
read(T);
while (T--) {
read(n);
tf.clear(); li.clear();
for (int i = ; i <= n; ++i) {
int x, y, k;
read(x);
read(y);
read(k);
if (k == ) tf.push_back(make_pair(x, y)); else li.push_back((make_pair(x, y)));
s[i + i - ] = x;
s[i + i] = y;
}
sort(s + , s + n + n);
int i = ;
kx = ;
while (i <= n * ) {
int j = i;
while (j + <= n * && s[j + ] == s[i]) ++j;
s[kx] = s[i];
i = j + ;
++kx;
}
--kx;
for (int i = ; i <= n + n; ++i) fa[i] = i, size[i] = ;
for (int i = ; i < li.size(); ++i) {
int x, y;
x = li[i].first;
y = li[i].second;
x = ge(x);
y = ge(y);
link(x, y);
}
bool f = ;
for (int i = ; i < tf.size(); ++i) {
int x, y;
x = tf[i].first;
y = tf[i].second;
x = ge(x);
y = ge(y);
x = find(x);
y = find(y);
if (x == y) { f = ; break; }
}
if (f) cout << "YES\n"; else cout << "NO\n";
}
return ;
}

BZOJ4195 luoguP1955 NOI2015D1T1 程序自动分析的更多相关文章

  1. 【BZOJ4195】[Noi2015]程序自动分析 并查集

    [BZOJ4195][Noi2015]程序自动分析 Description 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3 ...

  2. 【bzoj4195】[Noi2015]程序自动分析 离散化+并查集

    题目描述 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3,…代表程序中出现的变量,给定n个形如xi=xj或xi≠xj的变量 ...

  3. 【BZOJ4195】 [Noi2015]程序自动分析

    Description 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3,…代表程序中出现的变量,给定n个形如xi=xj或x ...

  4. BZOJ4195:[NOI2015]程序自动分析

    浅谈并查集:https://www.cnblogs.com/AKMer/p/10360090.html 题目传送门:https://lydsy.com/JudgeOnline/problem.php? ...

  5. 【BZOJ4195】【NOI2015】程序自动分析(并查集)

    [BZOJ4195][NOI2015]程序自动分析(并查集) 题面 Description 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设 ...

  6. 【bzoj4195】【NOI2015】程序自动分析

    4195: [Noi2015]程序自动分析 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 3470  Solved: 1626[Submit][Sta ...

  7. [UOJ#127][BZOJ4195][NOI2015]程序自动分析

    [UOJ#127][BZOJ4195][NOI2015]程序自动分析 试题描述 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2, ...

  8. BZOJ-4195 NOI2015Day1T1 程序自动分析 并查集+离散化

    总的来说,这道题水的有点莫名奇妙,不过还好一次轻松A 4195: [Noi2015]程序自动分析 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 836 ...

  9. BZOJ4195 程序自动分析

    Description 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3,…代表程序中出现的变量,给定n个形如xi=xj或x ...

随机推荐

  1. Zookeeper命令行world

    world:anyone:cdrwa getAcl /imooc/abc 获得节点abc的权限 设置权限为crwa.  setAcl /nick/abc world:anyone:crwa 测试删除权 ...

  2. 【转】CUDA之Dynamic Parallelism详解

    转自:http://blog.csdn.net/Bruce_0712/article/details/63683264 CUDA之Dynamic Parallelism详解(一) 1. 循环的并行化: ...

  3. Apache Kafka监控之KafkaOffsetMonitor

    转载自:http://www.cnblogs.com/Leo_wl/p/4564699.html 1.概述 前面给大家介绍了Kafka的背景以及一些应用场景,并附带上演示了Kafka的简单示例.然后, ...

  4. win764位系统上让32位程序能申请到4GB内存方法

    win764位系统上让32位程序能申请到4GB内存方法. 2016年09月18日 18:36:26 阅读数:1550 最近测试一个32位程序总是在1.2G左右内存时崩溃,怀疑是内存申请失败,本身32位 ...

  5. 跟着未名学Office - 熟练使用WORD

    目录 第一章.Word之编辑篇. 1 第一节 页面布局... 1 第二节 格式编辑... 1 第三节 表.图.域... 5 第四节 审阅.保护... 7 第五节 *插入对像... 9 第二章.Word ...

  6. ThinkPHP 3.1.2 输出和模型使用 配置项等 - 2

    一.ThinkPHP 3 的输出      (重点) a.通过 echo 等PHP原生的输出方式在页面中输出 b.通过display方法输出 想分配变量可以使用assign方法 c.修改左右定界符 休 ...

  7. 【mysql】之性能优化

    http://blog.csdn.net/orichisonic/article/details/48026031 https://www.cnblogs.com/zhming26/p/6322353 ...

  8. 【Nginx】之安装使用和配置SSL支持

    本文采用的是nginx源码安装 1.下载nginx源码包 wget http://nginx.org/download/nginx-1.8.0.tar 或者登录nginx官网下载更高版本 2.ngin ...

  9. Tomacat 配置

    server.xml文件中元素: 1.<Service name="Catalina"> 这个元素相当于IIS的一个网站.该元素可有多个.每个元素会根据名字在conf文 ...

  10. Lucene 4.8 - Facet Demo

    package com.fox.facet; /* * Licensed to the Apache Software Foundation (ASF) under one or more * con ...