LA - 3644 - X-Plosives

2023-11-03 13:33
文章标签 la 3644 plosives

本文主要是介绍LA - 3644 - X-Plosives,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题意:一些产品,每种产品由2种化合物合成,按顺序接收一些产品,若组成其中某些产品的化合物的种类数与这些产品的产品数相等,就要拒绝接收,因为可能爆炸,求要拒绝多少次。

题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&category=19&page=show_problem&problem=1645

——>>若加入的化合物与已存在的化合物构成了环,就该拒绝,用并查集解决即可。

#include <iostream>using namespace std;const int maxn = 100000 + 10;int fa[maxn], height[maxn];     //并查集的父亲数组与树的高度数组int find(int x)     //并查集找根函数
{return (fa[x] != x) ? find(fa[x]) : x;
}bool judge(int x, int y)        //并查集联合函数
{int new_x = find(x);int new_y = find(y);if(new_x == new_y) return 0;if(height[new_x] > height[new_y])       //当树 new_x 比树 new_y 高时fa[new_y] = new_x;else if(height[new_x] == height[new_y])     //当树 new_x 和树 new_y 一样高时{fa[new_y] = new_x;height[new_x]++;}elsefa[new_x] = new_y;      //当树 new_y 比树 new_x 高时return 1;
}int main()
{int a, b, i;while(cin>>a){for(i = 0; i < maxn; i++)       //并查集初始化{fa[i] = i;      //第个点自成一棵树height[i] = 1;      //只有自己,高度为1}int refuse_cnt = 0;while(a != -1){cin>>b;if(judge(a, b) == 0) refuse_cnt++;      //如果存在环的话,拒绝数+1cin>>a;}cout<<refuse_cnt<<endl;}return 0;
}



这篇关于LA - 3644 - X-Plosives的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/338513

相关文章

La-Z-Boy 标签制作注意事项

在制作标签之前,供应商需要通过EDI向La-Z-Boy发送提前发货通知(ASN)。ASN中的每个明细行将会至少对应一个运输编号(shipment ID),这个信息将会被体现在运输标签上,和标签上的条形码一起,用于La-Z-Boy收货。 供应商必须确保其装箱单以及发票中的信息能够对应上该批次货物的运输标签以及相关运输编号。供应商可以在La-Z-Boy提供的标签文档中,找到La-Z-Boy EDI部

Android 解决 No static method in class La/a/a/a; or its super classes

错误堆栈: Process: com.chaozh.iReader, PID: 24217java.lang.NoSuchMethodError: No static method getDrawable(Landroid/content/Context;I)Landroid/graphics/drawable/Drawable; in class La/a/a/a; or its super

qnx /var/log/la_gvm.txt 系统日志

qnx /var/log/la_gvm.txt 系统日志 /var/log/la_gvm.txt 是 QNX 操作系统中一个特定的日志文件,通常用于记录与 LA (Loadable Module) 或 GVM (Global Virtual Memory) 相关的信息。这个文件可以帮助系统管理员或开发者诊断与系统内存管理和模块加载相关的问题。 关键点解释: QNX: QNX 是一款实时操作系统

网络(Network,Seoul 2007,LA 3902)

题目地址:https://icpcarchive.ecs.baylor.edu/external/39/3902.html #include<iostream>#include<cstring>#include<vector>#include<algorithm>using namespace std;const int maxn=1000+10;vector<int> gr[ma

LA3644 X-Plosives

这题是刘汝佳书中的并查集范例,我使用了《挑战程序设计竞赛》书上提供的并查集模板。当我们读到一道题的时候,在读懂题意后应该思考这个问题适用于哪种数据模型,并通过经验来判断使用何种算法,而不是无头苍蝇乱撞。 大致题意:每次给并查集中的数字使用一个并集操作,前提是这两个数字目前并不在同一个集合之中。可能比较含糊,看给出的测试用例: 1 23 43 53 12 34 12 66 5-1

UVALive - 3644X-Plosives(并查集)

题目:UVALive - 3644X-Plosives(并查集) 题目大意:给出K个简单的化合物,正好包含K种元素,那么将它们装车的时候,已经拿到的化合物再来的时候就应该拒绝装车,安全起见,然后给你装车的化合物列表,问你需要拒绝装车的次数。 解题思路:并查集。将已经装过的化合物记录下来,那么如果下次的化合物如果已经在集合中了,就说明需要拒绝装车。 代码: #inclu

UVa 1362(LA 3516) Exploring Pyramids

依旧是《训练指南》上的一道例题。思路大致相同,即设有一个序列S(i),S(i+1),S(i+2)...S(j),d[i,j]为所求的解。当S(i)==S(k),i<k<=j 时,说明在k回到根,那么S(i+1)...S(k-1)构成一棵独立的子树(当然也可能并不是子树)。那么d[i,j]就要加上d[i+1,k-1]*d[k,j],不断递增k,每遇到一个k,d[i,j]+=d[i

LA 3211 Now or later / 2-SAT

每架飞机只能在E L 这2个时间点降落 每2架并且降落的时间间隔必须大于等于p才算安全 目标使p尽量大 二分时间间隔 做2-SAT 有解说明可行 xi = true 表示选择E  false 选择L 如果 abs(Ei - Ej) < p (p 是当前二分到的值) 那么 1.选择了Ei 必须选择Lj 2.选择了Ej 必须选择Li 建图 上模版 #include <cstdio>#in

LA 3641 Leonardo's Notebook / 置换

给出26个大写字母组成 字符串B问是否存在一个置换A使得A^2 = B 书上的证明结论 2个长度为n的相同循环相乘 n为奇数时结果为1个长度为n的循环 n为偶数时分裂成2个长度为n/2的循环 倒过来 对于一个长度为n为奇数的循环B都能找到一个长度为n的循环A使得A^2 = B 对应任意2个长度为n的不相交循环B,C 都能找到一个长度为2n的循环A 使得A^2 = BC 所以对于B=(1,

LA 2965 Jurassic Remains / 中途相遇法

求尽量多的字符串 每种大写字母出现偶数次 每个字符串可以看成一个长度为26 出现奇数次对应位置为1 偶数为0 就是求一些字符串 他们的异或为0 n最大为24 2^24超时 可以枚举前一半n/2所以的子集 存在map里 然后枚举后一半看是否有和它相同的 相同的异或就为0 枚举一半时间可以接受 #include <cstdio>#include <cstring>#include