2021.07.19 P2294 狡猾的商人(差分约束)

[P2294 HNOI2005]狡猾的商人 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

重点:

1.差分约束最长路与最短路

题意:

给出每个时间段具体账单,分析是否矛盾。

分析:

把每段时间起始时间前挪一个月,把相邻时间段连成连续的时间段,建正向边。如果只建正向边,对于开头是未知账单的来说,没法进行约束,因此建反向边。我们只需要知道所有边是否符合规矩,而不是某个具体的最大值或最小值,所以跑最长路或最短路都可以(亲自试验)。

代码如下:

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
#include<queue>
using namespace std;
const int inf=0x3f3f3f;
const int N=11000;
int cnt,head[N],t,n,m,dis[N],vis[N],tot[N];
struct node{
int to,next,val;
}a[N*20];
inline int read(){
int s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-')w=-1;
ch=getchar();
}
while(ch<='9'&&ch>='0'){
s=s*10+ch-'0';
ch=getchar();
}
return s*w;
}
void add(int u,int v,int w){
++cnt;
a[cnt].to=v;
a[cnt].val=w;
a[cnt].next=head[u];
head[u]=cnt;
}
int dijkstra(int s){
queue<int>q;
//memset(dis,-inf,sizeof(dis));
//cout<<dis[0]<<endl;//
for(int i=1;i<=n;i++)dis[i]=inf;
q.push(s);
dis[s]=0;
vis[s]=tot[s]=1;
while(!q.empty()){
int x=q.front();
q.pop();
vis[x]=0;
//cout<<x<<" ";//
++tot[x];
if(tot[x]==n)return 0;
for(int i=head[x];i;i=a[i].next){
int v=a[i].to;
if(dis[v]>dis[x]+a[i].val){
dis[v]=dis[x]+a[i].val;
if(!vis[v]){
q.push(v);
vis[v]=1;
}
}
}
}
//cout<<endl<<endl;//
return 1;
}
int main(){
//freopen("1.txt","r",stdin);
//freopen("1.out.txt","w",stdout);
t=read();
while(t--){
n=read();m=read();
cnt=0;
memset(head,0,sizeof(head));
memset(vis,0,sizeof(vis));
memset(tot,0,sizeof(tot));
//memset(&a,0,sizeof(a));
for(int i=1;i<=m;i++){
int u,v,w;
u=read()-1;v=read();w=read();
//cout<<u<<" "<<v<<" "<<w<<endl;
add(u,v,w);
add(v,u,-w);
}
int flag=1;
for(int i=0;i<=n;i++){
if(!tot[i]){
int x=dijkstra(i);
if(!x){
flag=0;
break;
}
}
}
//for(int i=0;i<=n;i++)cout<<dis[i]<<" ";cout<<endl<<endl;//
if(flag)cout<<"true"<<endl;
else cout<<"false"<<endl;
}
return 0;
}

2021.07.19 P2294 狡猾的商人(差分约束)的更多相关文章

  1. LUOGU P2294 [HNOI2005]狡猾的商人(差分约束)

    [传送门] (https://www.luogu.org/problemnew/show/P2294) 解题思路 差分约束.先总结一下差分约束,差分约束就是解决一堆不等式混在一起,左边是差的形式,右边 ...

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

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

  3. luogu 2294 [HNOI2005]狡猾的商人 差分约束

    一个差分约束模型,只需判一下有没有负环即可. #include <bits/stdc++.h> #define N 103 #define M 2004 #define setIO(s) ...

  4. BZOJ 1202 狡猾的商人 差分约束or带权并查集

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1202 题目大意: 刁姹接到一个任务,为税务部门调查一位商人的账本,看看账本是不是伪造的 ...

  5. 2021.07.19 P2624 明明的烦恼(prufer序列,为什么杨辉三角我没搞出来?)

    2021.07.19 P2624 明明的烦恼(prufer序列,为什么杨辉三角我没搞出来?) [P2624 HNOI2008]明明的烦恼 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn ...

  6. 2021.07.19 BZOJ2654 tree(生成树)

    2021.07.19 BZOJ2654 tree(生成树) tree - 黑暗爆炸 2654 - Virtual Judge (vjudge.net) 重点: 1.生成树的本质 2.二分 题意: 有一 ...

  7. 2021.08.16 P1260 工程规划(差分约束)

    2021.08.16 P1260 工程规划(差分约束) 重点: 1.跑最短路是为了满足更多约束条件. P1260 工程规划 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 造 ...

  8. P2294 [HNOI2005]狡猾的商人(差分约束)

    P2294 [HNOI2005]狡猾的商人 对于每个$(x,y,w)$,连边$(x-1,y,w),(y,x-1,-w)$,表示前$y$个月的收益比前$x-1$个月的收益大$w$ 这样题目就转化为询问图 ...

  9. 题解——洛谷P2294 [HNOI2005]狡猾的商人(差分约束)

    裸的差分约束 dfs判断负环,如果有负环就false,否则就是true 注意有多组数据,数组要清空 #include <cstdio> #include <algorithm> ...

随机推荐

  1. go语言学习入门篇1---go语言的主要特性与发展

    1.1 影响 Go 语言发展的早期编程语言 正如 "21 世纪的 C 语言" 这句话所说,Go 语言并不是凭空而造的,而是和 C++.Java 和 C# 一样属于 C 系.不仅如此 ...

  2. kvm管理查看信息,添加,删除,暂停恢复,克隆等

    KVM virsh管理指令 virsh 查看帮助信息 查看命令帮助 [root@KVM ~]# virsh Welcome to virsh, the virtualization interacti ...

  3. buu equation wp

    知识点考察:jsfuck解码.js逆向.z3处理大量数据 源码分析 源码 根据提示猜测有jsfuck Jsfuck编码共六个字符分别为[.].+.!.(.) 观察上述不难发现l['jsfuck']=' ...

  4. 多数据源并且数据库类型不同的情况下PageHelper的使用

    一.问题来源 最近开发一个项目需要依赖两个数据源,数据源类型分别为oracle和postgresql,代码中使用com.github.pagehelper分页插件进行分页,代码运行过程中postgre ...

  5. SpringBoot starter 作用在什么地方?

    依赖管理是所有项目中至关重要的一部分.当一个项目变得相当复杂,管理依赖会成为一个噩梦,因为当中涉及太多 artifacts 了. 这时候 SpringBoot starter 就派上用处了.每一个 s ...

  6. spring-注解驱动模式

    spring web装配原理: /** * WebApplicationInitializer Spring MVC 提供接口. * * Spring中的web自动配置,也是可以, */ /** * ...

  7. jvm-learning-类加载器分类

    public class ClassLoaderTest { public static void main(String[] args) { //获取系统类加载器 ClassLoader syste ...

  8. Redis的集群搭建(四)

    1.redis-cluster架构图 2.redis-cluster投票:容错 架构细节: (1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽. (2) ...

  9. java-spring

    Spring-IOC ioc概念 控制反转 把对象创建和对象之间的调用过程,交给Spring 进行管理. 目的就是,为了降低耦合度,因为当你想在一个类当中调用另外一个类的方法,你需要获得另外一个类的实 ...

  10. ACM - 动态规划 - UVA323 Jury Compromise

    UVA323 Jury Compromise 题解 考虑用动态规划.该问题要求解的最终状态为,选出的 \(m\) 个人,使得辩方总分与控方总分差的绝对值最小,总分之和最大.即 \(\left| D(\ ...