hdu 3038 How Many Answers Are Wrong——带权并查集
来源:互联网 发布:linux 文件拷贝命令 编辑:程序博客网 时间:2024/06/06 02:43
题意:给定m行数据,没行数据有三个数a b c,表示区间【a,b】的和为c,求错误数据个数
思路:一开始用线段树写,写了一半发现没法进行区间更新,果断删掉换了并查集。我们默认根节点总是在数值小的那个节点上,那么一个区间的和就可以表示为val【b】 - val【a - 1】,其中权值通过并查集来维护,更新时的操作只要在纸上画两种区间情况就一目了然了
#include <cstdio>using namespace std;const int MAXN = 2 * 1e5 + 10;int N, M, par[MAXN], val[MAXN];int Query(int x) { if (x == par[x]) return x; int temp = par[x]; par[x] = Query(par[x]); val[x] += val[temp]; return par[x];}int main() { while (~scanf("%d %d", &N, &M)) { for (int i = 0; i <= N; i++) par[i] = i, val[i] = 0; int ans = 0; for (int i = 1; i <= M; i++) { int a, b, cost; scanf("%d %d %d", &a, &b, &cost); a--; int x = Query(a), y = Query(b); if (x == y) { if (val[b] - val[a] != cost) ans++; } else { if (x > y) { par[x] = y; val[x] = val[b] - val[a] - cost; } else { par[y] = x; val[y] = val[a] - val[b] + cost; } } } printf("%d\n", ans); }}
阅读全文
0 0
- hdu 3038 How Many Answers Are Wrong——带权并查集
- HDU 3038 How Many Answers Are Wrong (并查集好题)(带权并查集)
- HDU 3038 How Many Answers Are Wrong? (带权并查集)
- hdu 3038 How Many Answers Are Wrong (带权并查集)
- HDU-3038 How Many Answers Are Wrong带权并查集
- HDU 3038 how many answers are wrong(带权并查集)
- HDU 3038 How Many Answers Are Wrong (带权并查集+区间判断)
- HDU - 3038 How Many Answers Are Wrong (带权并查集)
- hdu 3038 How Many Answers Are Wrong 带权并查集
- HDU 3038 How Many Answers Are Wrong(带权并查集)
- hdu 3038 How Many Answers Are Wrong 带权并查集
- hdu 3038 How Many Answers Are Wrong(带权并查集+树的性质)
- hdu 3038 How Many Answers Are Wrong(带权并查集+树的性质)
- HDU 3038How Many Answers Are Wrong 带权并查集
- hdu 3038 How Many Answers Are Wrong【带权并查集】
- HDU 3038 How Many Answers Are Wrong 带权并查集
- HDU 3038 How Many Answers Are Wrong(带权并查集)
- HDU 3038 How Many Answers Are Wrong (带权并查集)
- Git管理多个SSH密钥,Git多帐号配置
- Markdown 语法和 MWeb 写作使用说明
- 递推公式 【黑科技】
- Sigma Function LightOJ
- docker容器中安装vim,nginx等出现Unable to locate package
- hdu 3038 How Many Answers Are Wrong——带权并查集
- Cannot create encoder for Option of Product type, because Product type is represented as a row
- 最短路之Floyd(弗洛伊德)算法
- ccf 201703-1分蛋糕
- webpack
- 有源汇有上下界最大流详解(loj116)
- 顺序表应用1:多余元素删除之移位算法
- 过滤器
- python坑路历程(一)