Problem Description
TT and FF are ... friends. Uh... very very good friends -________-b

FF
is a bad boy, he is always wooing TT to play the following game with
him. This is a very humdrum game. To begin with, TT should write down a
sequence of integers-_-!!(bored).

Then,
FF can choose a continuous subsequence from it(for example the
subsequence from the third to the fifth integer inclusively). After
that, FF will ask TT what the sum of the subsequence he chose is. The
next, TT will answer FF's question. Then, FF can redo this process. In
the end, FF must work out the entire sequence of integers.

Boring~~Boring~~a
very very boring game!!! TT doesn't want to play with FF at all. To
punish FF, she often tells FF the wrong answers on purpose.

The
bad boy is not a fool man. FF detects some answers are incompatible. Of
course, these contradictions make it difficult to calculate the
sequence.

However, TT is a nice and lovely girl. She doesn't have
the heart to be hard on FF. To save time, she guarantees that the
answers are all right if there is no logical mistakes indeed.

What's more, if FF finds an answer to be wrong, he will ignore it when judging next answers.

But
there will be so many questions that poor FF can't make sure whether
the current answer is right or wrong in a moment. So he decides to write
a program to help him with this matter. The program will receive a
series of questions from FF together with the answers FF has received
from TT. The aim of this program is to find how many answers are wrong.
Only by ignoring the wrong answers can FF work out the entire sequence
of integers. Poor FF has no time to do this job. And now he is asking
for your help~(Why asking trouble for himself~~Bad boy)

 
 
Input
Line 1: Two integers, N and M (1 <= N <= 200000, 1 <= M
<= 40000). Means TT wrote N integers and FF asked her M questions.

Line
2..M+1: Line i+1 contains three integer: Ai, Bi and Si. Means TT
answered FF that the sum from Ai to Bi is Si. It's guaranteed that 0
< Ai <= Bi <= N.

You can assume that any sum of subsequence is fit in 32-bit integer.

 

Output

            A single line with a integer denotes how many answers are wrong.
 

Sample Input
10 5
1 10 100
7 10 28
1 3 32
4 6 41
6 6 1
 

Sample Output
1
 

 
Source
2009 Multi-University Training Contest 13 - Host by HIT
 

Recommend
gaojie

并查集看不出来系列

建立一个并查集, 并查集中每个节点的值是指这个节点到其根节点的距离(与根节点的差),

若要求区间 [a,b] 的和, 即为求sum[b]-sum[a-1];

代码:

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<map>
#include<iomanip>
#define INF 0x7ffffff
#define MAXN 200010
using namespace std;
const double eps=1e-;
int b[MAXN];
int val[MAXN];
int n,m;
void init()
{
memset(val,,sizeof(val));
for(int i=;i<=n;i++){
b[i]=i;
}
}
int find(int x)
{
// int tem;
// int t=x;
// while(b[t]!=t){
// t=b[t];
// }
// while(b[x]!=x){
// val[t]=val[t]+val[b[t]];
// x=b[x];
// b[x]=t;
// }
// return t;
if(b[x]==x) return x;
int t=b[x];
//val[x]+=val[b[x]];
b[x]=find(b[x]);
val[x]+=val[t];//注意此操作与DFS的顺序!!!这个操作的顺序是将根节点的值传下来, 注意有此操作必须结合路径压缩, 不然会出错误,why?
return b[x];
}
void uni(int x,int y,int c)
{
int xx=find(x);
int yy=find(y);
if(xx<yy){
b[yy]=xx;
val[yy]=val[x]+c-val[y];
}
else{
b[xx]=yy;
val[xx]=val[y]-val[x]-c;
}
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("data.in", "r", stdin);
#endif
std::ios::sync_with_stdio(false);
std::cin.tie();
int ans=;
int a,b,c;
int xx,yy;
while(cin>>n>>m){
ans=;
init();
for(int i=;i<m;i++){
cin>>a>>b>>c;
a--;//注意--操作, 因为要求的是a到b的距离, 因此需要 sum[b]-sum[a-1]
if(find(a)!=find(b)){
uni(a,b,c);
}
else{
if(val[b]-val[a]!=c){
ans++;
}
}
}
cout<<ans<<endl;
}
}

最新文章

  1. javascript随机打乱数组
  2. [.net 面向对象程序设计深入](3)UML——在Visual Studio 2013/2015中设计UML活动图
  3. Mongodb基本数据类型、常用命令之增加、更新、删除
  4. 【Alpha】Daily Scrum Meeting第一次
  5. jpa更新数据出错
  6. 《JavaScript DOM 编程艺术(第2版)》读书笔记
  7. Rotate String
  8. 制作win7+ubuntu +winPE+CDlinux多系统启动U盘
  9. HDU3727--Jewel (主席树 静态区间第k大)
  10. 图的广度优先/层次 遍历(BFS) c++ 队列实现
  11. maven 添加自己的包
  12. Ubuntu12.04下使用virtualbox4.3.12 amd64安装XP系统教程
  13. 一天搞定CSS:表单(form)--20
  14. Ubuntu 14.04.4 下 scp 远程拷贝提示:Permission denied, please try again. 的解决办法
  15. ADO.NET之Parameter属性
  16. 二叉树实现,C++语言描述
  17. 微软新一代Surface,该怎么看?
  18. Atcoder Tenka1 Programmer Contest 2019 D Three Colors
  19. workerman如何写mysql连接池
  20. 移植OpenWrt到CuHead Pro WiFi

热门文章

  1. [ An Ac a Day ^_^ ] CodeForces 586C Gennady the Dentist 模拟
  2. 放弃阿里云主机,选择高性价比Vultr VPS免备案
  3. 阿里云 镜像 源 debian
  4. 理解 Objective-C 的 ARC
  5. ajax的项目实操(只用于记录部分文件未引入)
  6. 安装cocoapods遇到的一些问题
  7. zabbix3.2在lamp环境安装
  8. [Mark] openvswitch megaflow
  9. GDB: advanced usages
  10. CentOS 6.4 系统下的MySQL的主从库配置