狡猾的商人_bzoj1202_差分约束
来源:互联网 发布:留学低龄化的数据 编辑:程序博客网 时间:2024/05/28 09:33
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个账本是假的。
Analysis
根据题意不难得出
为了满足松弛,我们需要把它变成这样
然后乘-1让等号方向统一
spfa
Code
/*ID:wjp13241PROG:businessmanLANG:C++*/#include <stdio.h>#include <string.h>#include <stdlib.h>#include <iostream>#include <algorithm>#include <stack>#include <queue>#define fo(i,a,b) for (int i=a;i<=b;i++)#define fil(x,t) memset(x,t,sizeof(x))#define STP system("pause")#define min(x,y) x<y?x:y#define max(x,y) x>y?x:y#define ll long long#define INF 0x7f7f7f7f#define EPS 1e-4#define N 401#define E N*N+1using namespace std;struct edge{int y,w,next;}e[E];int ls[E],vis[N],cnt[N],dis[N],maxE=0;int add(int x,int y,int w){e[++maxE]=(edge){y,w,ls[x]},ls[x]=maxE;}int spfa(int n){ stack<int>q; fil(dis,63); fil(cnt,0); fil(vis,0); fo(i,1,n) { q.push(i); vis[i]=1; dis[i]=0; } bool cirFlag=false; while (!q.empty()) { int now=q.top();q.pop(); if (++cnt[now]>n+2) return 0; for (int i=ls[now];i;i=e[i].next) if (e[i].w+dis[now]<dis[e[i].y]) { dis[e[i].y]=dis[now]+e[i].w; if (!vis[e[i].y]) { vis[e[i].y]=1; q.push(e[i].y); } } vis[now]=0; } return 1;}int main(){ int T; scanf("%d",&T); while (T--) { fil(ls,0); int n,m; scanf("%d%d",&n,&m); fo(i,1,m) { int x,y,w; scanf("%d%d%d",&x,&y,&w); add(x-1,y,w); add(y,x-1,-w); } int ans=spfa(n); if (!ans) printf("false\n"); else printf("true\n"); } return 0;}
0 0
- 狡猾的商人_bzoj1202_差分约束
- [BZOJ1202][HNOI2005][差分约束]狡猾的商人[水题]
- 狡猾的商人 bzoj 1202 差分约束系统
- [HNOI2005]狡猾的商人(差分约束)
- 【BZOJ】【P1202】【狡猾的商人】【题解】【线性规划=>差分约束】
- [BZOJ1202]HNOI2005 狡猾的商人|并查集|差分约束
- 差分约束/并查集——BZOJ1202/Luogu2294 [HNOI2005]狡猾的商人
- bzoj 1202: [HNOI2005]狡猾的商人 查分约束系统
- 【bzoj1202】狡猾的商人
- bzoj1202:狡猾的商人
- [HNOI2005] 狡猾的商人
- [bzoj1202] 狡猾的商人
- HNOI2005狡猾的商人
- [BZOJ1202] [HNOI2005]狡猾的商人
- 【HNOI2005】【BZOJ1202】狡猾的商人
- BZOJ1202: [HNOI2005]狡猾的商人
- 【BZOJ1202】【HNOI2005】狡猾的商人
- 狡猾的商人 [bzoj1202,HNOI2005]
- opencv如何进行摄像头标定
- hbase安装说明
- opencv学习(十四)之图像颜色通道分离和融合
- Java金融信息交换引擎 QuickFIX/J
- Bean和Map的互转+Demo
- 狡猾的商人_bzoj1202_差分约束
- Hadoop安装说明
- c#中单元测试
- java基础之equal()方法、static关键字、单例设计模式
- bridge和数码相片处理方式
- R语言快餐教程(1) - 我们开始做统计吧
- http请求方法(GET、POST)
- 使用IDEA进行Spark开发(一)-IDEA的配置
- 十个Linux的网络监控命令