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
累计一下前缀和,则Sum[l,r]=v等价于S[r]-S[l-1]=v。
将l-1向r连一条长度为v的边,将r向l-1连一条长度为-v的边。
dfs判判就可以了。
一不小心刷了rank1,IO优化真是一个好东西。

#include<cstdio>
#include<cctype>
#include<queue>
#include<cmath>
#include<cstring>
#include<algorithm>
#define rep(i,s,t) for(int i=s;i<=t;i++)
#define dwn(i,s,t) for(int i=s;i>=t;i--)
#define ren for(int i=first[x];i;i=next[i])
using namespace std;
const int BufferSize=1<<16;
char buffer[BufferSize],*head,*tail;
inline char Getchar() {if(head==tail) {int l=fread(buffer,1,BufferSize,stdin);tail=(head=buffer)+l;}return *head++;
}
inline int read() {int x=0,f=1;char c=Getchar();for(;!isdigit(c);c=Getchar()) if(c=='-') f=-1;for(;isdigit(c);c=Getchar()) x=x*10+c-'0';return x*f;
}
const int maxn=110;
const int maxm=2010;
int n,m,first[maxn],next[maxm],to[maxm],dis[maxm],e;
void AddEdge(int u,int v,int w) {to[++e]=v;dis[e]=w;next[e]=first[u];first[u]=e;
}
int vis[maxn],d[maxn];
int dfs(int x) {vis[x]=1;ren if(!vis[to[i]]) {d[to[i]]=d[x]+dis[i];if(!dfs(to[i])) return 0;}else if(d[to[i]]!=d[x]+dis[i]) return 0;return 1;
}
int main() {dwn(i,read(),1) {e=0;n=read()+1;m=read();memset(first,0,sizeof(first));while(m--) {int s=read(),t=read()+1,w=read();AddEdge(s,t,w);AddEdge(t,s,-w);}memset(vis,0,sizeof(vis));int ok=1;rep(i,1,n) if(!vis[i]) if(!dfs(i)) {ok=0;break;}puts(ok?"true":"false");}return 0;
}

View Code

转载于:https://www.cnblogs.com/wzj-is-a-juruo/p/5010944.html

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

  1. bzoj1202[HNOI2005]狡猾的商人

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

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

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

  3. BZOJ1202 [HNOI2005]狡猾的商人(洛谷P2294)

    带权并查集 BZOJ题目传送门 洛谷题目传送门 之前做过几乎一样的题目(这里),然而忘光了 记wiwiw_i表示根节点到iii这段时间的盈利,当x" role="presentat ...

  4. bzoj1202 [HNOI2005]狡猾的商人

    https://www.lydsy.com/JudgeOnline/problem.php?id=1202 带权并查集维护前缀和 s,t,v相当于sum[t]-sum[s-1]=v,那么对于一个连通块 ...

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

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

  6. P2294 [HNOI2005]狡猾的商人

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

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

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

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

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

  9. [HNOI2005]狡猾的商人

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

最新文章

  1. JetBrains发布DataGrip 1.0——数据库与SQL领域中的瑞士军刀
  2. pandas将dataframe数据列中的年、月、日列组合成单一的日期数据列实战
  3. phpstrom php出现404
  4. Oracle用户管理学习总结
  5. android 4.0以上WebView不能全屏播放视频的解决办法
  6. Axios 如何缓存请求数据?
  7. php程序员应具有的7种能力
  8. maven服务器项目,Maven项目搭建
  9. php 扩展库 开发环境,PHP 扩展开发环境搭建
  10. 读《大道至简》第2章有感
  11. 设置内核的运行环境之隔离的应用程序
  12. Why do people love certain websites and web products?
  13. ERROR: libass not found using pkg-config
  14. SCDM——多进(出)口流道的抽取
  15. 欢迎加入可一科技,见证区块链技术的力量
  16. python 北上资金_北上资金持股相关因子
  17. 300多个地级市GDP及第一、二、三产业占比数据(1990-2021年)
  18. 案例-背景图片的使用(background)
  19. 一篇文章入门Spring
  20. app 上架到苹果应用商店

热门文章

  1. 无需自己输入include这些的方法
  2. Anaconda3-5.0.1 输入ipython 出现 ImportError: cannot import name ‘create_prompt_application‘
  3. WSL 或者ubantu安装 apt-get install npm 失败解决方法
  4. Pytorch学习记录-torchtext和Pytorch的实例( 使用神经网络训练Seq2Seq代码)
  5. Go语言环境搭建(Windows+Linux)
  6. 大三Java后端暑期实习面经总结——Java多线程并发篇
  7. MLIR中间表示与编译
  8. Deeplearning知识蒸馏
  9. 如何选择视觉CV光源颜色
  10. 多传感器融合:自动驾驶(下)