hdoj3038(带权并查集)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3038
题意:对于给定的a1..an,通过询问下标x..y,给出a[x]+...+a[y],但给出的值可能是错的,需要判断,因为题目说的是整数,也可能是负整数,所以逻辑错误只有一种情况:给了a..c的值x,a..b的值y,之后又给了b..c的值z,若x!=y+z,则是错误答案,否则是正确答案。
思路:
参考巨巨的博客:https://www.cnblogs.com/liyinggang/p/5327055.html。
用root数组表示祖先,dis数组表示到祖先的距离(如对于数据1 2 3,3的祖先为1,则dis[3]=1+2=3),都需要初始化。
每次询问输入a,b,s,同时--b,ra=getr(a),rb=getr(b)。
1.ra!=rb:则合并
令root[rb]=ra,dis[rb]=dis[a]+s-dis[b](画图模拟一下,记住此处的b加一了)
2.ra==rb:则查询
若dis[b]-dis[a]!=s,则为错误答案。
最后注意这道题是多组数据输入,详见代码:
#include<bits/stdc++.h>
using namespace std; const int maxn=;
int n,m,a,b,s,res;
int root[maxn],dis[maxn]; int getr(int k){
if(root[k]==k) return k;
else{
int tmp=root[k];
root[k]=getr(root[k]);
dis[k]+=dis[tmp];
return root[k];
}
} int main(){
while(~scanf("%d%d",&n,&m)){
res=;
for(int i=;i<=n+;++i)
root[i]=i,dis[i]=;
while(m--){
scanf("%d%d%d",&a,&b,&s);
++b;
int ra=getr(a),rb=getr(b);
if(ra==rb){
if(dis[b]-dis[a]!=s)
++res;
}
else{
root[rb]=ra;
dis[rb]=dis[a]+s-dis[b];
}
}
printf("%d\n",res);
}
return ;
}
hdoj3038(带权并查集)的更多相关文章
- HDOJ-3038(带权并查集)
How many answers wrong HDOJ-3038 一个很好的博客:https://www.cnblogs.com/liyinggang/p/5327055.html #include& ...
- POJ 1703 Find them, Catch them(带权并查集)
传送门 Find them, Catch them Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 42463 Accep ...
- [NOIP摸你赛]Hzwer的陨石(带权并查集)
题目描述: 经过不懈的努力,Hzwer召唤了很多陨石.已知Hzwer的地图上共有n个区域,且一开始的时候第i个陨石掉在了第i个区域.有电力喷射背包的ndsf很自豪,他认为搬陨石很容易,所以他将一些区域 ...
- poj1417 带权并查集 + 背包 + 记录路径
True Liars Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 2713 Accepted: 868 Descrip ...
- poj1984 带权并查集(向量处理)
Navigation Nightmare Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 5939 Accepted: 2 ...
- 【BZOJ-4690】Never Wait For Weights 带权并查集
4690: Never Wait for Weights Time Limit: 15 Sec Memory Limit: 256 MBSubmit: 88 Solved: 41[Submit][ ...
- hdu3038(带权并查集)
题目链接: http://acm.split.hdu.edu.cn/showproblem.php?pid=3038 题意: n表示有一个长度为n的数组, 接下来有m行形如x, y, d的输入, 表示 ...
- 洛谷OJ P1196 银河英雄传说(带权并查集)
题目描述 公元五八○一年,地球居民迁移至金牛座α第二行星,在那里发表银河联邦 创立宣言,同年改元为宇宙历元年,并开始向银河系深处拓展. 宇宙历七九九年,银河系的两大军事集团在巴米利恩星域爆发战争.泰山 ...
- poj1984 带权并查集
题意:有多个点,在平面上位于坐标点上,给出一些关系,表示某个点在某个点的正东/西/南/北方向多少距离,然后给出一系列询问,表示在第几个关系给出后询问某两点的曼哈顿距离,或者未知则输出-1. 只要在元素 ...
- poj1611 带权并查集
题意:病毒蔓延,现在有 n 个人,其中 0 号被认为可能感染,然后给出多个社交圈,如果某个社交圈里有人被认为可能被感染,那么所有这个社交圈里的人都被认为可能被感染,现在问有多少人可能被感染. 带权并查 ...
随机推荐
- CAP原理和BASE思想--GLQ
分布式领域CAP理论,Consistency(一致性), 数据一致更新,所有数据变动都是同步的Availability(可用性), 好的响应性能Partition tolerance(分区容忍性) 可 ...
- 接口测试3-2csv格式
csv文件数据 IntellJ IDEA打开终端:view-tool windows-terminal,可以在终端中查看文件路径 阿里 马云 京东 刘强东 京东 马化腾 #java //读取csv文件 ...
- MongoDB整库备份+整库导入
备份前检查: [root@Load29 tmp]# mongo localhost: MongoDB shell version: connecting to: localhost:/test Ser ...
- js基础和运算符
1.什么JavaScript? 运行环境 : 浏览器 是一种具有安全性的客户端的脚本语言 用来实现与web页面交互 脚本语言:语言嵌入到htm ...
- Python Json序列化与反序列化
在python中,序列化可以理解为:把python的对象编码转换为json格式的字符串,反序列化可以理解为:把json格式字符串解码为python数据对象.在python的标准库中,专门提供了json ...
- Spring AOP课程实战
- java内存模型(一)正确使用 Volatile 变量
文章转载自: 正确使用 Volatile 变量 Java 语言中的 volatile 变量可以被看作是一种 "程度较轻的 synchronized":与 synchronize ...
- PyQt5系列教程(八)定时器QTimer的使用
软硬件环境 OS X EI Capitan Python 3.5.1 PyQt 5.5.1 前言 如果需要在程序中周期性地进行某项操作,比如检测某种设备的状态,就会用到定时器.本文就来看看PyQT5中 ...
- 0_Simple__simpleLayeredTexture
二维分层纹理 ▶ 源代码.用纹理方法把元素按原顺序从 CUDA3D 数组中取出来,求个相反数再加上层数放入全局内存,输出. #include <stdio.h> #include &quo ...
- centos7环境下的Mysql5.7.22安装
参考网站: https://blog.csdn.net/vipbupafeng/article/details/80271089 1.下载 官网链接:https://dev.mysql.com/dow ...