博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[HNOI2005]狡猾的商人
阅读量:7198 次
发布时间:2019-06-29

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

题目描述

输入输出格式

输入格式:

 

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

 

输出格式:

 

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

 

输入输出样例

输入样例#1:
23 31 2 101 3 -53 3 -155 31 5 1003 5 501 2 51
输出样例#1:
truefalse

 题解:

这个题目是一个带权并查集的裸题,记sum[i]表示i到根的前缀合之差,自己推一下式子就可以了,注意,因为是前缀和,所以前面一个要减去1,并且find的时候要记下father,先更改值,再更新sum。

 

代码:

#include
#include
#include
#include
#include
using namespace std;int fa[10000],sum[10000];int n,m,w,flag;void cl(){ memset(sum,0,sizeof(sum)); memset(fa,0,sizeof(fa)); for(int i=1;i<=n;i++) fa[i]=i;}int find(int x){ if(fa[x]==x)return x; int t=find(fa[x]); sum[x]+=sum[fa[x]]; fa[x]=t; return fa[x];}void hebin(int x,int y,int quan){ int roofx=find(x),roofy=find(y); if(roofx>roofy) sum[roofx]=sum[y]-sum[x]-quan,fa[roofx]=roofy; else sum[roofy]=sum[x]-sum[y]+quan,fa[roofy]=roofx;}int main(){ scanf("%d",&w); while(w--){ scanf("%d%d",&n,&m); cl();flag=1; for(int i=1;i<=m;i++){ int x,y,z; scanf("%d%d%d",&x,&y,&z); if(!flag) continue; x--; if(find(x)!=find(y)) hebin(x,y,z); else if(sum[y]-sum[x]!=z) {flag=0;} } if(flag) printf("true\n"); else printf("false\n"); }}

 

转载于:https://www.cnblogs.com/renjianshige/p/7231879.html

你可能感兴趣的文章
牛客多校第五场 E room 二分图匹配 KM算法模板
查看>>
4.06 一次向多个表中插入记录
查看>>
2014/11/06 Oracle触发器初步 2014-11-06 09:03 49人阅读 评论(0) ...
查看>>
采用MiniProfiler监控EF与.NET MVC项目(Entity Framework 延伸系列1)
查看>>
Longest Consecutive Sequence
查看>>
bash快捷建-光标移到行首、行尾等
查看>>
PHP+mysql系统报错:PHP message: PHP Warning: Unknown: Failed to write session data (files)
查看>>
【转】浅谈CSRF攻击方式
查看>>
-21.jpg
查看>>
出库发货扫描检测软件(方案)
查看>>
vue中axios的使用与封装
查看>>
java list几种性能比较
查看>>
学习笔记之FluentAssertions
查看>>
JavaScript高级程序设计(第三版)学习笔记11、12、17章
查看>>
B00014 C++实现的AC自动机
查看>>
条件测试与比较
查看>>
已知/未知宽高的浮动元素水平居中对齐 和 图片水平垂直居中对齐
查看>>
解决 - java.lang.OutOfMemoryError: unable to create new native thread
查看>>
f5健康检查
查看>>
玩转计划任务命令:schtasks
查看>>