题目描述

给你一个\(n\)元一次方程,判断是否有解,方程给出的格式为 \(a-b=c\)

思路

这道题看上去是一道题目看上去就是判断给出条件是否有矛盾,所以就自然而然的可以使用带权并查集

但是因为我太懒了并且这道题目要求使用差分约束系统进行求解,于是就需要将题目转化一下

因为差分约束系统只能处理不等量关系,所以就需要使用一个不等式组进行表示,并且这个不等式组只能有一个解

于是就可以将 \(a-b=c\) 转化为\(\begin{cases}a-b\le c \\a-b \ge c\end{cases}\)

但是在差分约束系统只能处理\(\le\)的情况,所以不等式组就转化成了\(\begin{cases}a-b\le c \\b-a \le -c\end{cases}\),

于是在输入之后就可以这样储存了:


v[a-1].push_back({b,c}),v[b].push_back({a-1,-c});

注意: \(a\) 应该\(-1\),否则就将 \(a\) 这个月漏算了

AC Code


#include<bits/stdc++.h>
inline int read(){ //没有大用的快读
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-')
f=-1;
ch=getchar();
}while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch^48);
ch=getchar();
}return x*f;
}int T,n,m,cnt[1001],dis[1001];
bool vis[1001];
struct node{
int k; //到达的点
int num; //代价
};
std::vector<node> v[1001]; //因为本人太懒,所以使用vector储存||v[i]表示从i出发的节点
inline bool spfa(int s){
std::queue<int> q;
memset(dis,0x3f,sizeof(dis)); //多测不清空,爆零见祖宗
memset(vis,0,sizeof(vis));
memset(cnt,0,sizeof(cnt));
dis[s]=0; //初始化
vis[s]=1;
q.push(s);
while(!q.empty()){
int top=q.front();
q.pop();
vis[top]=0;
for(node i:v[top]){
if(dis[i.k]>dis[top]+i.num){ //差分约束系统跑的是最长路
dis[i.k]=dis[top]+i.num;
if(!vis[i.k]){
q.push(i.k);
vis[i.k]=1;
cnt[i.k]++;
if(cnt[i.k]>n) //有负权环
return 0;
}
}
}
}return 1;
}int main(){
T=read();
while(T--){
n=read(),m=read();
for(int i=1,a,b,c;i<=m;++i){
a=read(),b=read(),c=read();
v[a-1].push_back({b,c}); //储存不等式
v[b].push_back({a-1,-c});
}bool flag=1;
for(int i=0;i<=n;++i){
if(spfa(i)==0){
flag=0;
break;
}
}if(flag==1)
puts("true");
else
puts("false");
for(int i=0;i<=m;i++) //多测不彻底清空=10pts
v[i].erase(v[i].begin(),v[i].end());
}return 0;
}

[HNOI2005] 狡猾的商人's 题解 (差分约束系统)的更多相关文章

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

    1202: [HNOI2005]狡猾的商人 题目:传送门 题解: 据说是带权并查集!蒟蒻不会啊!!! 可是听说lxj大佬用差分约束A了,于是开始一通乱搞. 设s[i]为前i个月的总收益,那么很容易就可 ...

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

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

  3. bzoj1202: [HNOI2005]狡猾的商人(并查集 差分约束)

    1202: [HNOI2005]狡猾的商人 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4127  Solved: 1981[Submit][Sta ...

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

    1202: [HNOI2005]狡猾的商人 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4969  Solved: 2496[Submit][Sta ...

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

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

  6. [BZOJ1202][HNOI2005]狡猾的商人

    [BZOJ1202][HNOI2005]狡猾的商人 试题描述 刁姹接到一个任务,为税务部门调查一位商人的账本,看看账本是不是伪造的.账本上记录了n个月以来的收入情况,其中第i 个月的收入额为Ai(i= ...

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

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

  8. [HNOI2005]狡猾的商人 ,神奇做法——贪心

    洛谷P2294 [HNOI2005]狡猾的商人 ,神奇做法--贪心 看到大牛都是写的差分约束或带权并查集,本蒟蒻都不太会(还是用差分约束过了的QAQ),但是想出一种贪心的策略,运用神奇的优先队列实现. ...

  9. [luogu P2294] [HNOI2005]狡猾的商人

    [luogu P2294] [HNOI2005]狡猾的商人 题目描述 输入输出格式 输入格式: 从文件input.txt中读入数据,文件第一行为一个正整数w,其中w < 100,表示有w组数据, ...

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

    P2294 [HNOI2005]狡猾的商人 题目描述 输入输出格式 输入格式: 从文件input.txt中读入数据,文件第一行为一个正整数w,其中w < 100,表示有w组数据,即w个账本,需要 ...

随机推荐

  1. Mysql之SQL语句初级用法

    前言 本文通过简单的示例去了解Mysql的DDL.DML.DCL的语句用法. 一.DDL语句 DDL(Data Definition Language)语句: 数据定义语言,主要是进行定义/改变表的结 ...

  2. WGAN

    wgan之前, 原始GAN出现了什么问题? https://www.cnblogs.com/Allen-rg/p/10305125.html 判别器越好,生成器梯度消失越严重 一句话概括:最小化第二种 ...

  3. CentOS-6.5快速搭建HTTP服务器和仅供授权用户登陆的FTP服务器

    CentOS-6.5快速搭建HTTP服务器和仅供授权用户登陆的FTP服务器 (2014-01-09 21:29:31) 转载▼ 标签: linux centos 服务器 http vsftp 分类:& ...

  4. 力扣181(MySQL)- 超过经理收入的员工(简单)

    题目: 表:Employee 编写一个SQL查询来查找收入比经理高的员工. 以 任意顺序 返回结果表. 查询结果格式如下所示. 示例 1:  解题思路: 一.[子查询] 先通过子查询找到当前员工的经理 ...

  5. 企业版Spark Databricks + 企业版Kafka Confluent 联合高效挖掘数据价值

    ​简介:本文介绍了如何使用阿里云的Confluent Cloud和Databricks构建数据流和LakeHouse,并介绍了如何使用Databricks提供的能力来挖掘数据价值,使用Spark ML ...

  6. [TP5] 浅谈 ThinkPHP 的 Hook 行为事件及监听执行

    TP5 中使用 \think\Hook::add('xx', '\app\xxx\behavior\Xx') 注册行为. 也可以在 application/tags.php 中统一注册. 在需要监听执 ...

  7. WPF 自己封装 Skia 差量绘制控件

    使用 Skia 能做到在多个不同的平台使用相同的一套 API 绘制出相同界面效果的图片,可以将图片绘制到应用程序的渲染显示里面.在 WPF 中最稳的方法就是通过 WriteableBitmap 作为承 ...

  8. kubeadm安装多master节点的k8s集群(1)

    一.环境准备 k8s集群角色 IP 主机名 安装的相关组件 控制节点 192.168.1.10 master apiserver.controller-manager.scheduler.kubele ...

  9. 🔥 PyTorch神操作:一图秒懂Tensor变形记!

    亲爱的码农小伙伴们,你们是否还在为Tensor的各种变换头大如斗?别怕,今天给大家送上一张超实用的PyTorch变换秘籍图,让你的Tensor操作如行云流水,CPU和GPU之间的切换如穿梭自如! GP ...

  10. Ubuntu(Linux)虚拟机与主机共享文件夹hgfs文件普通用户不能访问问题

    参考文章: https://blog.csdn.net/weixin_42224577/article/details/108107554 在虚拟机中设置好添加共享文件后,普通用户并不能访问mnt文件 ...