hdu 3038 How Many Answers Are Wrong (带权)
2016-02-22 19:25
295 查看
题意:有 n 个数,你不知道它们的值, 然后又有 m 行数,每行 a ,b ,c,表示 a 到 b 之间所有数的和为c(包含了第a个和第b个数)。但是这m行数里面有些是错的,就是与前面给的条件相冲突的,要求你最后输出错了几行。
分析:用并查集,同样,还是需要一个辅助数组r[]记录每一个点跟根节点的关系。
首先我们可以把问题稍微转化一下,就是如果已知[3,6],[7,10]俩个区间内各自所有数的和,那么就可以[3,10]内所有数的和,可是,这俩个区间根本就不衔接,所有要稍微处理一下,将左区间值减1,就变成了[2,6],[6,10],这样就方便处理了。
既然这样的话,[2,6]区间内所有数的和就完全可以等价于点2到点7之间的距离了。
那么接下来关系就很好维护和说明了。
分析:用并查集,同样,还是需要一个辅助数组r[]记录每一个点跟根节点的关系。
首先我们可以把问题稍微转化一下,就是如果已知[3,6],[7,10]俩个区间内各自所有数的和,那么就可以[3,10]内所有数的和,可是,这俩个区间根本就不衔接,所有要稍微处理一下,将左区间值减1,就变成了[2,6],[6,10],这样就方便处理了。
既然这样的话,[2,6]区间内所有数的和就完全可以等价于点2到点7之间的距离了。
那么接下来关系就很好维护和说明了。
#include <cstdio> #include <iostream> #include <cstring> #include <string> #include <cstdlib> #include <algorithm> #include <cmath> #include <vector> #include <set> #include <list> #include <queue> #include <map> using namespace std; #define L(i) i<<1 #define R(i) i<<1|1 #define INF 0xFFFFFFFF #define pi acos(-1.0) #define eps 1e-4 #define maxn 100010 #define MOD 1000000007 int parent[30010],ans; //parent[x]是x的父节点 relation[x]是x与根节点的关系 int n,m,relation[30010]; //初始化数组 int Find(int x) { if(x != parent[x]) { int temp = Find(parent[x]); relation[x] += relation[parent[x]]; parent[x] = temp; //relation[x] = (relation[x] + relation[temp]) % 3; //不断更新当前节点与根节点关系 } return parent[x]; } //寻找x的根节点 void Union(int x,int y,int v) { int px = Find(x); int py = Find(y); if(px == py) { if(abs(relation[x]-relation[y]) != v) ans++; } else { parent[px] = py; relation[px] = relation[y] + v - relation[x]; } //relation[py] = (D - 1 + 3 - relation[Y] + relation[X]); //更新Y根节点与总的根节点关系 } //合并X,Y int main() { while(scanf("%d%d", &n, &m) != EOF) { for(int i = 0; i <= n; i++) { parent[i] = i; relation[i] = 0; } ans = 0; for(int i = 0; i < m; i++) { int x,y,v; scanf("%d%d%d",&x,&y,&v); x--; Union(x,y,v); } printf("%d\n",ans); } return 0; }
相关文章推荐
- #查看Linux的版本信息
- oracle数据闪回功能(恢复误删除的表信息)
- script_language.php
- iOS中ASI和AFN的区别
- wdcp centos6.5多网站部署
- golang笔记——数据类型
- 刚Instagram创始人的斯坦福分享会
- 指针数组与数组指针
- bzoj1024: [SCOI2009]生日快乐
- 如何使用纯CSS3创建一个简单的五角星图形
- uva 10828 高斯消元·dp
- 梯度下降和随机梯度下降为什么能下降?
- 日志协查步骤
- 梯度下降和随机梯度下降为什么能下降?
- 从字符编码的发展历史理解ANSI、GB2312、Unicode、UTF8和UTF16区别
- Spring中常用类型的bean配置(Map,List,Set,基本类型)
- MySQL创建帐号/修改权限不生效
- Android常用界面布局
- Cmake突然编译什么都不成功 CMake Error at ...CMakeTestCCompiler.cmake:61 (message)
- <转>Android ORM 框架子 greenDao 使用心得