LA 3644 易爆物 并查集】的更多相关文章

题目链接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1645 题意:有一些化合物,每种化合物中含有两种元素,如果有k种化合物含有K种元素就会爆炸,现在装车司机按照输入顺序一件一件的装,遇到加入后会爆炸的化合物就不装,问会有多少化合物不能被装入. 解法:将每种元素看成一个顶点,一个化合物含有两种元素就是一条边,构图完成后…
A secret service developed a new kind of explosive that attain its volatile property only when a specicassociation of products occurs. Each product is a mix of two different simple compounds, to which wecall a binding pair. If N > 2, then mixing N diff…
题目大意:有一些简单的化合物,每个化合物由两种元素组成,把这些化合物按顺序装车,若k个化合物正好包含k种元素,那么就会爆炸.避免爆炸,有些化合物就不能装车.求有多少个不能装车. 题目分析:若k个化合物正好包含k种元素,那么就会爆炸.我们把每种元素看成一个顶点,每种化合物看成一条边,若有环存在的时候正好是爆炸的情况,所以避免成环记录不能放的数量就行了. #include<iostream> #include<cstdio> using namespace std; ; int f[m…
思路:每一个product都可以作一条边,每次添加一条边,如果这边的加入使得某个集合构成环,就应该refuse,那么就用并查集来判断. AC代码: //#define LOCAL #include <stdio.h> #include <string.h> const int maxn = 1e5 + 5; int par[maxn], rank[maxn]; void init() { memset(rank, 0, sizeof(rank)); for(int i = 0; i…
https://vjudge.net/problem/UVALive-3644 简单的并查集题目. #include<iostream> using namespace std; + ; int p[maxn]; int find(int x) { return p[x] != x ? p[x] = (find(p[x])) : x; } int main() { //freopen("D:\\txt.txt", "r", stdin); int x,…
题目链接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1028 比较简单,用数组d[i]表示结点i和祖先结点的距离,查询时压缩路径并更新d[]数组. 刘汝佳大白书(P193): 贴代码: #include<cstdio> #include<algorithm> ; int pa[N],d[N];…
题意: 有一些简单化合物,每个化合物都由两种元素组成的,你是一个装箱工人.从实验员那里按照顺序把一些简单化合物装到车上,但这里存在安全隐患:如果车上存在K个简单化合物,正好包含K种元素,那么他们就会组成一个容易爆炸的混合物,为了安全起见,每当你拿到一个化合物时,如果它已经和已装车的化合物形成了易爆混合物,你就应该拒绝装车,否则就应该装车,输出你拒绝了多少个混合物. 思路: 一种化合物由两种元素组成,所以我们就可以把每个元素看成一个点,那么一个简单化合物就是一条边.当图出现环的时侯,组成环的边对应…
部分内容摘自博客http://blog.csdn.net/u012881011/article/details/46883863,感谢 易爆物D305             运行时间限制:1000ms: 运行空间限制:51200KB: 试题描述 有一些简单化合物,每个化合物部由两种元素组成的(每个元素用一个大写字母表示).你是一个装箱工人,从实验员那里按照顺序依次把一些简单化合物装到车上.但这里存在一个安全隐患:如果车上存在k个简单化合物,正好包含k种元素,那么它们将组成一个易爆的混合物.为了…
题目传送门 题意:训练指南P248 分析:第一个操作可以用并查集实现,保存某集合的最小高度和最大高度以及城市个数.运用线段树成端更新来统计一个区间高度的个数,此时高度需要离散化.这题两种数据结构一起使用,联系紧密. #include <bits/stdc++.h> using namespace std; const int N = 1e5 + 5; const int M = 3 * N; const int INF = 0x3f3f3f3f; struct Point { int x, y…
题目传送门 题意:训练指南P245 分析:首先这道是经典的并查集题目,利用异或的性质.异或性质:x ^ 0 = x -> a ^ a = 0 -> x ^ a ^ a = x,即一个数对某个数异或偶数次等于它本身. 第一种操作:p = v,设立一个超级根节点RT,rt[p] = RT, edge[p] = v,表示p的父亲节点是RT,到它的值就是p本身的值(p^0).第二种p q v操作,分别找p和q的祖先,将祖先合并,那么edge[r1] = v1 ^ v2 ^ v3,这样保证下一次v1'仍…