1202: [HNOI2005]狡猾的商人

Time Limit: 10 Sec  Memory Limit: 162 MB
Submit: 1863  Solved: 899
[Submit][Status][Discuss]

Description

刁姹接到一个任务,为税务部门调查一位商人的账本,看看账本是不是伪造的。账本上记录了n个月以来的收入情况,其中第i 个月的收入额为Ai(i=1,2,3...n-1,n), 。当 Ai大于0时表示这个月盈利Ai 元,当 Ai小于0时表示这个月亏损Ai 元。所谓一段时间内的总收入,就是这段时间内每个月的收入额的总和。 刁姹的任务是秘密进行的,为了调查商人的账本,她只好跑到商人那里打工。她趁商人不在时去偷看账本,可是她无法将账本偷出来,每次偷看账本时她都只能看某段时间内账本上记录的收入情况,并且她只能记住这段时间内的总收入。 现在,刁姹总共偷看了m次账本,当然也就记住了m段时间内的总收入,你的任务是根据记住的这些信息来判断账本是不是假的。

Input

第一行为一个正整数w,其中w < 100,表示有w组数据,即w个账本,需要你判断。每组数据的第一行为两个正整数n和m,其中n < 100,m < 1000,分别表示对应的账本记录了多少个月的收入情况以及偷看了多少次账本。接下来的m行表示刁姹偷看m次账本后记住的m条信息,每条信息占一行,有三个整数s,t和v,表示从第s个月到第t个月(包含第t个月)的总收入为v,这里假设s总是小于等于t。

Output

包含w行,每行是true或false,其中第i行为true当且仅当第i组数据,即第i个账本不是假的;第i行为false当且仅当第i组数据,即第i个账本是假的。

Sample Input

2
3 3
1 2 10
1 3 -5
3 3 -15
5 3
1 5 100
3 5 50
1 2 51

Sample Output

true
false

HINT

Source

想法好像比较奇怪……打死我也没想到这是个并查集啊。

并查集维护两个数组,f[i]表示i所在的并查集,v[i]表示f[i]->i月的收入,每次读入s,t,令p=f[s],q=f[t],若p==q,说明s,t属于同一个并查集,找f[s],f[t]的过程中维护处v[s],v[t],flag=v[t+1]-v[s]==w?1:0。若p!=q,则将f[q]赋值为p,(令每个并查集的左端点作为父亲结点,维护v[q])。

另:由于维护的是前缀和,所以读入是可将t+1,判断v[t+1]-v[s]的值。

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
int f[110],v[110];
int n,m,s,t,w,ww;
bool flag;
int find(int x)
{if (f[x]==x) return x;int pp=f[x];f[x]=find(f[x]);v[x]+=v[pp];return f[x];
}
int main()
{scanf("%d",&w);while (w--){memset(v,0,sizeof(v));flag=0;scanf("%d%d",&n,&m);for (int i=1;i<=n+1;i++) f[i]=i;for (int i=1;i<=m;i++){scanf("%d%d%d",&s,&t,&ww);t++;int p=find(s),q=find(t);if (p==q){if (v[t]-v[s]!=ww) {flag=1;break;}}else{f[q]=p;v[q]=v[s]+ww-v[t];}}if (flag) printf("false\n"); else printf("true\n");}return 0;
}

转载于:https://www.cnblogs.com/ws-fqk/p/4658769.html

[HNOI2005][BZOJ1202] 狡猾的商人相关推荐

  1. bzoj1202 狡猾的商人[并查集]

    1202: [HNOI2005]狡猾的商人 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 2932 Solved: 1382 [Submit][Sta ...

  2. 【BZOJ1202】【HNOI2005】狡猾的商人

    Description 刁姹接到一个任务,为税务部门调查一位商人的账本,看看账本是不是伪造的.账本上记录了n个月以来的收入情况,其中第i 个月的收入额为Ai(i=1,2,3-n-1,n), .当 Ai ...

  3. BZOJ1202 狡猾的商人 (Floyd)

    题意分析 看了一眼题意,发现FLOYD可以做,其实就是判断是否满足边相加的关系成立. 需要注意的是,有可能有这样的数据, 3 2 1 2 10 3 3 -15 这个也是true的,也就是说,当边不满足 ...

  4. bzoj1202[HNOI2005]狡猾的商人

    bzoj1202[HNOI2005]狡猾的商人 题意: 账本上记录了n个月以来的收入情况,其中第i 个月的收入额为Ai .所谓一段时间内的总收入,就是这段时间内每个月的收入额的总和.给出m段时间内的总 ...

  5. BZOJ1202 [HNOI2005]狡猾的商人 【并查集】

    1202: [HNOI2005]狡猾的商人 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 4180  Solved: 2015 [Submit][S ...

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

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

  7. P2294 [HNOI2005]狡猾的商人

    P2294 [HNOI2005]狡猾的商人 题意: 你需要调查某个商人的账本,给你n个月内,m条账单信息,每条账单信息为x到y月的收入或者支出多少钱,问你根据账单信息判断这个账本是否合理 5 3 1 ...

  8. bzoj 1202: [HNOI2005]狡猾的商人(带权并查集)

    1202: [HNOI2005]狡猾的商人 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 3616  Solved: 1740 [Submit][S ...

  9. 洛谷 P2294 [HNOI2005]狡猾的商人

    洛谷 P2294 [HNOI2005]狡猾的商人 题目: 有图·.转链接 题解: 差分约束. 虽然题目中没有出现不等式,但还是属于差分约束的范畴之内的. 一开始我就按照它的要求u到v加权值w的边.但发 ...

  10. [HNOI2005]狡猾的商人

    [HNOI2005]狡猾的商人 Time Limit: 10 Sec Memory Limit: 162 MB Description 刁姹接到一个任务,为税务部门调查一位商人的账本,看看账本是不是伪 ...

最新文章

  1. matlab中的cellstr的用法,matlab中的cell array, cellstr()和char()的用法
  2. 制作r710 linux系统盘,记一次云主机系统盘扩容及制作私有镜像的操作步骤
  3. iOS - 解决设置导航栏按钮图片变色的问题
  4. 直观理解神经网络和梯度下降
  5. ZKWeb网页框架1.3正式发布
  6. hdu1113 Word Amalgamation(详解--map和string的运用)
  7. CUDA 学习(十四)、纹理内存
  8. xv6 Traps, interrupts, and drivers
  9. 关于nmap和traceroute在虚拟机里使用的问题
  10. android 5.0一键刷机教程,HTC D820t (Desire 820 移动4G Android 5.0)一键刷机教程,轻松刷机...
  11. 通信码元速率和带宽理解
  12. HTTP 请求的方式
  13. Multisim14创建LM386教程(含所需文件)
  14. 剑三游戏计算机配置,剑网3重制版电脑配置需求 关于选电脑二三事
  15. 傅立叶变换在图像处理中的作用
  16. list的stream流常用用法
  17. Jsonp跨域漏洞浅析
  18. phpstorm无法打开设置的问题
  19. vfifo控制mig_基于MIG IP核的DDR3控制器(一)
  20. 7nm工艺中的后端设计挑战

热门文章

  1. 「MYSQL」MYSQL中的int(11)到底代表什么意思?
  2. Activities 四大组件之一
  3. 2017-11-14
  4. 《Cocos2D-x权威指南》——第3章 Cocos2D-x中的核心类
  5. 通过binlog恢复mysql数据库
  6. glib wpa_supplicant Unix上库编译错误解决与总结
  7. ISI CVPR journal ranking
  8. MySQL table_cache 优化(二)
  9. Iterm2 配置(不断更新)
  10. matlab三维怎么转换二维,求助,二维图像如何绕轴旋转成为三维图像