Orz iwtwiioi  http://www.cnblogs.com/iwtwiioi/p/3887617.html

并查集+前缀和

  啊……这题应该是水题吧?但是我这个大沙茶居然一天都没想出来……判负环,最短路什么的都试过,都跪了……

  “如果我们能够根据之前的信息推出来第r天应该比第l-1天多多少钱,再跟这次的比较一下,就知道当前这条信息是不是假的了。”蒟蒻如是想到。

  上面那个查询用前缀和可以很方便的实现~但是问题是每条信息,既相当于一个update操作(对于关系未知的情况),又想当于一个query操作(对于已知的),该怎么分开呢?而且,修改之间是会有传递性的,比如一开始我们知道了[1,3]和[6,7]这几天的信息,下一次又给了一条[4,5]的信息,我们就得把前后的全部合并……

  等等……?合并?并查集?

  嗯对的,既不是差分约束,也不是2-SAT,就是一个并查集……

  对于一个“集合”,s[i]表示从第i天到fa[i]天的金钱差(前缀和哦~)。对于每条信息,如果l和r在同一个集合里,则直接利用前缀和求差分并跟val比较就行了,如果不在同一个集合里,则合并两个集合。自己手画一下看看是个什么情况吧。

 /**************************************************************
Problem: 1202
User: ProgrammingApe
Language: C++
Result: Accepted
Time:112 ms
Memory:808 kb
****************************************************************/ //BZOJ 1202
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#define rep(i,n) for(int i=0;i<n;++i)
#define F(i,j,n) for(int i=j;i<=n;++i)
#define D(i,j,n) for(int i=j;i>=n;--i)
#define pb push_back
using namespace std;
const int N=,INF=~0u>>;
//#define debug
void read(int &v){
v=; int s=;
char ch=getchar();
while(ch<'' || ch>''){ if (ch=='-') s=-; ch=getchar();}
while(ch>='' && ch<='') {v=v*+ch-''; ch=getchar();}
v*=s;
}//Âèµ°£¬¾ÓÈ»ÊǶÁÈë³ö´íÁË int n,m,fa[N],s[N];
int getfather(int x){
if (fa[x]==x) return x;
else {
int p=fa[x];
fa[x]=getfather(fa[x]);//这里一定要先递归修改了父亲,再修改自己
s[x]+=s[p];
return fa[x];
}
}
int main(){
// freopen("input.txt","r",stdin);
int T;
read(T);
while(T--){
read(n); read(m);
F(i,,n) fa[i]=i,s[i]=; bool sign=;
int fx,fy,x,y,z;
F(i,,m){
read(x),read(y),read(z); --x;
fx=getfather(x); fy=getfather(y);
if (fx!=fy){
fa[fx]=fy;
s[fx]=s[y]-s[x]+z;//这里是重点……好好想一想
}
else if (s[x]-s[y]!=z) {sign=;break;}
}
if (sign) printf("true\n");
else printf("false\n"); }
return ;
}

【BZOJ】【1202】【HNOI2005】狡猾的商人的更多相关文章

  1. bzoj 1202: [HNOI2005]狡猾的商人 并查集好题

    1202: [HNOI2005]狡猾的商人 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2946  Solved: 1384[Submit][Sta ...

  2. BZOJ 1202: [HNOI2005]狡猾的商人( 差分约束 )

    好像很多人用并查集写的... 前缀和, 则 sumt - sums-1 = v, 拆成2条 : sumt ≤ sums-1 + v, sums-1 ≤ sumt - v 就是一个差分约束, 建图跑SP ...

  3. BZOJ——1202: [HNOI2005]狡猾的商人

    http://www.lydsy.com/JudgeOnline/problem.php?id=1202 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: ...

  4. BZOJ 1202 [HNOI2005]狡猾的商人(并查集)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1202 [题目大意] 给出一些区间和的数值,问是否存在矛盾 [题解] 用并查集维护前缀和 ...

  5. BZOJ 1202 [HNOI2005]狡猾的商人:并查集(维护距离)

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1202 题意: 有一个账本,记录了n个月的盈亏. 每个月的数值:正为盈,负为亏. 你知道m个 ...

  6. bzoj 1202 [HNOI2005]狡猾的商人——带偏移量的并查集

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1202 带偏移量的并查集. 注意先 find() 再调用 dis !!! 自己的对拍太水了. ...

  7. BZOJ 1202: [HNOI2005]狡猾的商人 [带权并查集]

    题意: 给出m个区间和,询问是否有区间和和之前给出的矛盾 NOIp之前做过hdu3038..... 带权并查集维护到根的权值和,向左合并 #include <iostream> #incl ...

  8. bzoj 1202: [HNOI2005]狡猾的商人

    我居然用暴力跑过去了... 思路:两个区间合成一个新的区间才会产生冲突, 我们用并查集维护前缀和, 0 - n 个节点分别表示sum[ 0 ] - sum[ n ], d[ i ] 表示 前缀i 和它 ...

  9. 1202: [HNOI2005]狡猾的商人

    1202: [HNOI2005]狡猾的商人 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1554  Solved: 745[Submit][Stat ...

  10. bzoj 1201[HNOI2005]数三角形 1202 [HNOI2005]狡猾的商人 暴力 权值并查集

    [HNOI2005]数三角形 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 349  Solved: 234[Submit][Status][Disc ...

随机推荐

  1. sql分类及基本sql操作,校对规则(mysql学习笔记二)

    sql针对操作对象分为不同语言 数据操作(管理)语言 DML或者将其细分为 ( 查询  DQL 管理(增,删,改)  DML) 数据定义语言(对保存数据的格式进行定义) DDL 数据库控制语言(针对数 ...

  2. 搭通自己的电脑与GitHub的传输通道

    一.远程仓库怎么玩 1. 自己搭建一个运行Git的服务器 Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上,但肯定有一台机器有着最原始的版本库,然后别的机器来克隆这个原始版本库,这 ...

  3. markdown文档编写

    (这里面的符号都是英文的:回车是需要:空格 空格 回车) # markdown练习---1.引入图片(1和4只差!) ![周杰伦](http://p3.so.qhimg.com/bdr/_240_/t ...

  4. DevExpress LookUpEdit和ComboBoxEdit部分用法

    LookUpEdit 1.绑定列 (注意点:LookUpEdit1的FieldName要和绑定的列明一致) 方式一: LookUpEdit1.Properties.DisplayMember = &q ...

  5. 没有Where条件下group by走索引

    C:\Users\Administrator>sqlplus /nolog SQL :: Copyright (c) , , Oracle. All rights reserved. SQL&g ...

  6. C 的 一些写法格式 交流

    好久以前刚开始学习前辈们的代码的时候,发现好多代码感到好奇怪. 1)代码看不懂 2)代码格式看不懂 网上也没见同学们分享.当自己代码写多了,也渐渐的理解为什么要这样写了. 说主题之前 还是 说一些 题 ...

  7. 设置SVN hooks实现自动发布

    # CentOS下安装SVN yum -y install subversion svnserve --version cd /home/ mkdir svn cd svn/ /usr/bin/svn ...

  8. windows32位下安装mongodb

    下载mongodb:http://downloads.mongodb.org/win32/mongodb-win32-i386-2.4.5.zip 给mongodb指定一个数据存放路径:这里我们放在m ...

  9. hdu 5146 Sequence

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5146 Sequence Description Today we have a number sequ ...

  10. ssh 安装

    一 ssh 1.查看ssh服务的状态 输入以下命令: sudo service sshd status 如果出现 Loaded: error (Reason: No such file or dire ...