NOIP 考前 并查集复习
POJ 1182
把一个点拆成x,x+n,x+2*n,x吃y可以表示认为x,y+n是一类的,x+n,y+2*n是一类,x+2*n,y是一类。
#include <cstdio> const int Maxn=;
int F[Maxn*],n,k,Type,x,y,Ans;
int Get(int x) {return F[x]==x?x:F[x]=Get(F[x]);}
int main()
{
scanf("%d%d",&n,&k);
for (int i=;i<=*n;i++) F[i]=i;
for (int i=;i<=k;i++)
{
scanf("%d%d%d",&Type,&x,&y);
if (x>n || y>n || (x==y && Type==))
{
Ans++;
continue;
} if (Type==)
{
if (Get(x)==Get(y+n) || Get(x)==Get(y+*n))
{
Ans++;
continue;
}
F[Get(x)]=Get(y);
F[Get(x+n)]=Get(y+n);
F[Get(x+*n)]=Get(y+*n);
} else
{
if (Get(x)==Get(y) || Get(x)==Get(y+*n))
{
Ans++;
continue;
}
F[Get(x)]=Get(y+n);
F[Get(x+n)]=Get(y+*n);
F[Get(x+*n)]=Get(y);
}
}
printf("%d\n",Ans);
return ;
}
POJ 1182
HDU 3047
Sum[x]表示fa[x]和x的差. 带权并查集
#include <cstdio> int Sum[],Father[],n,m,Count,u,v,w;
int Get_Father(int x)
{
if (x==Father[x]) return x;
int Tmp=Get_Father(Father[x]);
Sum[x]+=Sum[Father[x]];
return Father[x]=Tmp;
}
int main()
{
while (scanf("%d%d",&n,&m)!=EOF)
{
for (int i=;i<=n;i++) Father[i]=i,Sum[i]=;
Count=;
for (int i=;i<=m;i++)
{
scanf("%d%d%d",&u,&v,&w);
int fu=Get_Father(u),fv=Get_Father(v);
if (fu!=fv)
{
Father[fu]=fv;
Sum[fu]=Sum[v]+w-Sum[u];
} else
{
if (Sum[u]-Sum[v]!=w)
Count++;
}
}
printf("%d\n",Count);
}
return ;
}
HDU 3047
BZOJ 1202
带权并查集
#include <cstdio>
int KASE,n,m,u,v,w;
int Father[],Sum[];
int Get_Father(int x)
{
if (x==Father[x]) return x;
int Tmp=Get_Father(Father[x]);
Sum[x]+=Sum[Father[x]];
Father[x]=Tmp;
return Tmp;
}
int main()
{
scanf("%d",&KASE);
for (int Kase=;Kase<=KASE;Kase++)
{
scanf("%d%d",&n,&m); bool flag=false;
for (int i=;i<=n;i++) Father[i]=i,Sum[i]=;
for (int i=;i<=m;i++)
{
scanf("%d%d%d",&u,&v,&w);
int fu=Get_Father(u-),fv=Get_Father(v);
if (fu==fv)
{
if (Sum[u-]-Sum[v]!=w)
{
flag=true;
break;
}
} else
{
Father[fu]=fv;
Sum[fu]=Sum[v]-Sum[u-]+w;
}
}
puts(flag?"false":"true");
}
return ;
}
BZOJ 1202
NOIP 考前 并查集复习的更多相关文章
- 2019牛客第八场多校 E_Explorer 可撤销并查集(栈)+线段树
目录 题意: 分析: @(2019牛客暑期多校训练营(第八场)E_Explorer) 题意: 链接 题目类似:CF366D,Gym101652T 本题给你\(n(100000)\)个点\(m(1000 ...
- Codevs 3287 货车运输 2013年NOIP全国联赛提高组(带权LCA+并查集+最大生成树)
3287 货车运输 2013年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 传送门 题目描述 Description A 国有 n 座 ...
- 2018.11.04 NOIP训练 小水塘(并查集)
传送门 这是复习普及组的时候做过的题了. 之前一直觉得很难码没有去做. 现在发现可以用并查集直接水过去. 其实就是把题目中说的连通的部分的面积用带权并查集维护一下就行了. 代码: #include&l ...
- NOIp 2015信息传递【tarjan/拓扑/并查集】
一道好的NOIp题目,在赛场上总能用许多算法A掉.比如这道和关押罪犯. 题目传送门 法一:tarjan在有向图中跑最小环 有人从别人口中得知自己信息,等效于出现了一个环.于是 这就变成了一个有向图ta ...
- [NOIP摸你赛]Hzwer的陨石(带权并查集)
题目描述: 经过不懈的努力,Hzwer召唤了很多陨石.已知Hzwer的地图上共有n个区域,且一开始的时候第i个陨石掉在了第i个区域.有电力喷射背包的ndsf很自豪,他认为搬陨石很容易,所以他将一些区域 ...
- 【NOIP模拟_54测试】【并查集】【二进制】【搜索】【区间序列类】
第一题 Mushroom的序列 大意: 给一个序列,求一段连续最长区间满足:最多改变一个数,使得区间是严格的上升子序列. 解: 直接扫描一遍,记一个最长上升子序列编号.然后从每一个编号为1 的点来判断 ...
- 2018.11.02 NOIP模拟 飞越行星带(最小生成树/二分+并查集)
传送门 发现题目要求的就是从下到上的瓶颈路. 画个图出来发现跟去年noipnoipnoip提高组的奶酪差不多. 于是可以二分宽度+并查集检验,或者直接求瓶颈. 代码
- 并查集:POJ 1182 食物链 复习
#include <iostream> #include <algorithm> #include <cstring> #include <cstdlib&g ...
- 【2-SAT】【并查集】NOIp模拟题 植树方案 题解
一个类似2-SAT的思想,但是简化了很多.只需要用到并查集实现. 题目描述 企鹅国打算种一批树.所谓树,就是由$N$个结点与$N-1$条边连接而成的连通无向图.企鹅国的国王对于这些树有下列要求 ...
随机推荐
- 会计凭证BAPI_ACC_DOCUMENT_POST
*&---------------------------------------------------------------------* *& Report ZFIFB107 ...
- Python笔记总结week1
1. Python介绍: 发明者:Guido 应用范围:网络应用.科学运算.GUI程序.系统管理工具.其他程序 优势:简单易懂.开发效率高.高级语言.可移植性.可扩展性.可嵌入性. 缺点:速度慢,代码 ...
- phpmyadmin 长时间登陆不过期
一个小技巧: 在项目开发过程中,经常使用phpmyadmin,默认情况下,一段时间不操作,就需要重新登陆,如果要长时间使用,操作如下: 修改config.inc.php中的$cfg['Serv ...
- 开启LOH压缩?
我们知道.NET CLR的GC堆中有一种特殊的堆,它专门存放超过85000byte的对象(详见这里),这就是大对象堆(LOH). 在.NET Framework 4.5.1之前,微软并没有提供对LOH ...
- 大米网赚项目介绍,官方唯一客服QQ:712994168
大米平台项目来源 QQ:712994168 大米软件本质上是一个高质量网赚项目收集和发布平台,该平台的所有项目都是经过专业的测试团队实测有效的项目和教程,只要去做绝对可以赚钱.平台里面的项目类型包 ...
- 全面分析Java的垃圾回收机制
Java的堆是一个运行时数据区,类的实例(对象)从中分配空间.Java虚拟机(JVM)的堆中储存着正在运行的应用程序所建立的所有对象,这些对象通过new.newarray.anewarray和mult ...
- js当中的声明和初始化的顺序
if(!("a" in window)) { var a=1; } alert(a); 这里的alert出来undefined 这句话就相当于 var a; if(!(“a” in ...
- javascript如何用户的判断操作系统
<script> alert(window.navigator.userAgent); if(window.navigator.userAgent.indexOf("Window ...
- Ionic的跨域问题
跨域大家都不陌生,但最近一直遇到一个坑,也是自身对ajax和angular的不深入造成,所以记录一笔,下次遇到绕过. 参考过:http://ionichina.com/topic/54f051698c ...
- 第八篇.Bootstrap下拉菜单
给div一个class “dropdown”,将下拉菜单放在这个div里就可以显示bootstrap的下拉菜单. <div class="dropdown"> < ...