博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU3038 How Many Answers Are Wrong 并查集
阅读量:5319 次
发布时间:2019-06-14

本文共 890 字,大约阅读时间需要 2 分钟。

欢迎访问~原文出处——



题意概括

  有一个序列,共n个数,可正可负。

  现在有m个结论。n<=200000,m<=40000

  每个结论包括3个数a,b,s,表示序列中a~b的区间和为s。

  现在让你依次判断结论的正确性。

  如果当前结论与之前的矛盾,那么ans++,忽略该结论。

  注意多组数据。


 

题解

  这个差不多是带权并查集的板子题了……应该不用多说了。。


 

代码

#include 
#include
#include
#include
#include
using namespace std;const int N=200005;int n,m,fa[N],val[N];int getf(int k){ if (fa[k]==k) return k; int res=getf(fa[k]); val[k]+=val[fa[k]]; return fa[k]=res;}int main(){ while (~scanf("%d%d",&n,&m)){ for (int i=0;i<=n;i++) fa[i]=i,val[i]=0; int ans=0; while (m--){ int a,b,s; scanf("%d%d%d",&a,&b,&s); a--; int Fa=getf(a),Fb=getf(b); if (Fa==Fb) ans+=(val[a]-val[b])!=s; else { fa[Fa]=Fb; val[Fa]=-val[a]+s+val[b]; } } printf("%d\n",ans); } return 0;}

  

转载于:https://www.cnblogs.com/zhouzhendong/p/HDU3038.html

你可能感兴趣的文章
LINUX的磁盘管理du命令详解
查看>>
Double Dispatch讲解与实例-面试题
查看>>
ivew Upload 上传图片组件
查看>>
C#-多态
查看>>
如果做好测试PM【转载】
查看>>
数据表行转列
查看>>
记录一下任务
查看>>
(mysql)union 与 union all 的区别
查看>>
关于计数排序、桶排序与基数排序的小结
查看>>
【USACO 5.4.2】Character Recognition
查看>>
redis配置日志输出
查看>>
彻底搞懂 JS 中 this 机制
查看>>
C# 泛型编程之泛型类、泛型方法、泛型约束
查看>>
Linux IO实时监控iostat命令详解(转载)
查看>>
jQuery Colorbox弹窗插件使用教程小结、属性设置详解以及colorbox关闭
查看>>
spring boot 2.0 源码分析(三)
查看>>
多态的概念和作用//转载
查看>>
在Intellij IDEA或者PhpStorm下用X-debug调试PHP
查看>>
线性基
查看>>
C#中如何创建xml文件 增、删、改、查 xml节点信息
查看>>