poj1703 Find them, Catch them

种类并查集 发现抓住 tag[i] 表示 i 结点 与其父节点是否在同一个集合中(表示的是一种相对关系)GetFather时:压缩路径,同时更新tag[i]合并时:更新tag[father[i]]#include <stdio.h> #include <iostream> #include <stack> #include <string> #include <se... 阅读详情

补记:

关于非递归版本为何会超时,今天早晨就有了答案。请教同学之后,了解到真正的原因:STL对于算法练习的代码而言,还是太慢了(说STL效率高是在实际工程中,使用STL一般不会拖后腿)。改用数组模拟栈就不超时了,耗时比递归稍微少一些,可以忽略不计(看来理论上说得通的东西实际中总体还是不会错的)。

//非递归版本的find函数。递归版本忘记怎么写了,就写一个非递归版本。
//事实上find就做了一件事:
//1.如果x==p[x],返回x的值
//2.否则,从叶子结点x出发一路向上直到找到树根,并把沿途经过的所有结点(包括x)都指向树根,即参照案件都设置为树根上面的案件,并更新关系。
int myFind(int x)
{
	if(x==p[x]) return x;

	int wp=x;	//wp means waypoints
	int ind=-1;	//栈空时候的指针位置

	while (wp!=p[wp])
	{
		wpstack[++ind]=wp;//wpstack是用于模拟栈的全局数组
		wp=p[wp];
	}	//此while结束后wp就是始祖了

	int cf=wp;	//cf means current father
	int cn;	//cn means current node
	while (ind!=-1)
	{
		cn=wpstack[ind--];
		p
【题解-POJ1703 Find them, Catch them WA,还在找BUG😩。 阅读详情

相关推荐

40-Type-C电路设计

Type-C电路设计

weixin_66510961的博客 9564

3:发现它,抓住

总时间限制: 1000ms 内存限制: 65536kB 描述 一个城市中有两个犯罪团伙A和B,你需要帮助警察判断任意两起案件是否是同一个犯罪团伙所为,警察所获得的信息是有限的。假设现在有N起案件(N 1. D [a] [b] 其中[a]和[b]表示两起案件的编号,这条信息表明它们属于不同的团伙所为 2. A [a] [b] 其中[a]和[b]表示两起案件的编号,

复习。 3701

esim分布式云卡池技术

eSIM卡,即Embedded-SIM,嵌入式SIM卡。eSIM卡的概念就是将传统SIM卡直接嵌入到设备芯片上,而不是作为独立的可移除零部件加入设备中,用户无需插入物理SIM卡。这一做法将允许用户更加灵活的选择运营商套餐,或者在无需解锁设备、购买新设备的前提下随时更换运营商。未来通用的eSIM标准建立将为普通消费者、企业用户节省更多移动设备使用成本,并带来更多的便利、安全性。 2018年 3月7日,中国联通宣布,正式在上海、天津、广州、深圳、郑州、长沙6座城市率先启动“eSIM一号双终端”业务的办理。[.

著名博客 3669

Onenjudge 百炼 1703 ---- 发现它,抓住它 (并查集的应用)

发现它,抓住它 一个城市中有两个犯罪团伙A和B,你需要帮助警察判断任意两起案件是否是同一个犯罪团伙所为,警察所获得的信息是有限的。假设现在有N起案件(N<=100000),编号为1到N,每起案件由团伙A或团伙B所为。你将按时间顺序获得M条信息(M<=100000),这些信息分为两类: 1、 D [a] [b] 其中[a]和[b]表示两起案件的编号,这条信息表明它们属于不同的团伙所为2、A [a] [b]

pku_Coder的博客 6085

发现它,抓住

我们先来讲一下这道题的思路,我们输入之后,首先将1~N这N个数字插入到并查集中,然后如果输入的是‘D’,那么就unionSet进行合并(一个集合内的所有元素代表这些犯罪团伙都不是一个团伙),如果输入的是‘A’,那么进行find函数查找a和b的所在集合,我们就只需要判断他们的所在集合是否相同即可。 如果不相同,代表不确定,输出Not sure yet.,如果a和b的父节点是相同的(代表他们是否是同一个集合),如果相同,就输出In the same gang.,如果不是就输出In different

wo_ai_luo_的博客 1508

POJ-1703:发现它,抓住它 -关系并查集的基本运用+坑点分析

又写了一个并查集,runtime error多次,最后玄学AC。 原题传送门 这道题其实与食物链题解非常之像 难度比食物链稍低,这里的难点在于并查集只能进行集合之间的合并,如何操作能正确的合并不同组的犯罪团伙呢? 答案是开两倍的数组,0-nnn的kind[i]kind[i]kind[i]表示iii属于一类罪犯,n+1−2nn+1-2nn+1−2n的kind[i]kind[i]kind[i]表示ii...

csyifanZhang的博客 1499

并查集POJ 1703 Find them, Catch them

POJ 1703 : Find them, Catch them 有两大帮派,现在不知道每个人的帮派情况。有两种操作,D x y 表示x和y在不同帮派,A x y查询x和y的帮派情况。 如果在同一帮派,输出In the same gang. 如果不在同一帮派,输出In different gangs. 不确定帮派情况则输出Not sure yet. 这里是POJ 11...

小酷Miki的专栏 224

POJ - 1703 Find them, Catch them并查集

                  POJ - 1703  Find them, Catch them并查集)          这道题与食物链那一道题是同一类型的,但稍微简单些,题意就不说了                   比普通的并查集多了一个relation [i]数组,记录与父亲节点的关系,在并查集里的元素都是已经它们之间的关系的,在路径压缩与集合合并时不断的更新relation数...

GYH0730的博客 434

poj 1703 Find them, Catch them(带权并查集)

题目链接:poj 1703 Find them, Catch them 题目大意:在城市中有两个大的帮派,Gang Dragon 和Gang Snake,先在有n个人被抓了,警察队他们进行m次操作,操作分为两种,询问A a b, 要求判断a和b是不是属于同一个团伙,D a b 表示说a b不属于同一个团伙。 解题思路:带权并查集的简单版,权值为1表示和前一个人不属于同一个团

不慌不忙、不急不躁 1108

poj1703 Find them Catch them

http://www.elijahqi.win/2018/01/12/poj1703-find-them-catch-them/ ‎ Description The police office in Tadu City decides to say ends to the chaos, as launch actions to root up the TWO gangs in the city

Elijahqi 381

POJ 1703 Find them, Catch them(种类并查集)

题目地址:POJ 1703 种类并查集水题。 代码如下: #include #include #include #include #include #include #include #include #include #include #include using namespace std; int bin[600000], rank[600000]; int f

scf0920 1273

POJ1703 Find them, Catch them

题目链接:http://poj.org/problem?id=1703 大概思路:题目要确认的有三种结果,所以不能直接找出a的不同集合再与b合并。由于事先并不知道a、b是哪一派别的,所以开一个2*maxn大的数组,分成两个派别:a属于a,a属于a+maxn。每次执行D操作其实就是合并(a,b+maxn)和(a+maxn,b),最后判断a,b是否同一派别,a,b+maxn是否同一派别即可。 TL

sun_apple_123 281

POJ-1703-Find them, Catch them 解题报告

一道标准的关系

JZQT_T的博客 1332

POJ 1703——Find them, Catch them并查集变形】

题目传送门 Description The police office in Tadu City decides to say ends to the chaos, as launch actions to root up the TWO gangs in the city, Gang Dragon and Gang Snake. However, the police first needs ...

NIRVANA REBIRTH 244

POJ 1703 Find them, Catch them并查集

题目链接:http://poj.org/problem?id=1703 题目大意: 给定m个操作: D x y:x罪犯和y罪犯不在一个团伙。(总共只有两个团伙) A x y:询问x和y罪犯的关系 解题思路: 很容易想到是并查集,但最后还是让我纠结了良久。一直MLE。 对于每次的D x y操作,每次不仅要找到两个不同集合标志头进行更新,还要更新a数组,即...

baidui8622的博客 87

Find them, Catch them POJ - 1703

The police office in Tadu City decides to say ends to the chaos, as launch actions to root up the TWO gangs in the city, Gang Dragon and Gang Snake. However, the police first needs to identify which g...

songziyuan_的博客 602

POJ1703Find them, Catch them 【种类并查集

题目链接:http://poj.org/problem?id=1703 题目大意:给n个人,m次询问。A代表询问a, b之间的关系,D代表给出a, b属于不同的帮派。 我的想法: 太菜了,上课的时候没想到这种方法。 思路: 1.感觉有点像2-sat的思想,对于D给出的a, b两人属于不同帮派。我们就将a于b的对立点用并查集维护在一个集合中,也将b于a的对立点连通。 2.查询时...

a6334167的博客 172

POJ 1703 Find them, Catch them

Find them, Catch them Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 24693   Accepted: 7418 Description The police office in Tadu City decides to say ends to

ACM2272902662的专栏 878

POJ 1703Find them, Catch them关系并查集

POJ 1703Find them, Catch them关系并查集) Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 38951   Accepted: 11987 Description The police office in Tadu City

ACMer' 1303

POJ 1703: Find them, Catch them

非常基础的一道在查询时需要传递其它信息的并查集, 这方面的经典题目首推 POJ 1182 食物链 鉴于博客里没有这种类型的题目就放上来了。 写合并的时候还错误的把两个节点间的距离写成两个根节点之间的距离了, 智商捉急得简直不能多说 = =||| 题目链接:http://poj.org/problem?id=1703 题意: 有一些人分属两个帮派。 每个帮派至少有一个

frog的小池塘 950

基于STM32单片机城市消防无人机控制系统的设计

1、18000字论文,查重25%以下;2、STM32 单片机最小系统 无线通信电路 电池管理电路 地面无线数据接收器 OLED 显示电路 声光报警电路 无线图像传输模块 GPS 定位模块 机载视频监控器3、系统软件部分设计 软件通信协议 机载控制器的软件设计 地面操控终端的软件设计 人机交互界面的设计 软件功能设计

上一篇: poj2002 Squares
下一篇: 最大连续子序列和/乘积
mach7
博客等级 码龄15年 32粉丝 50原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值