题目描述

给你一个\(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—MySQL架构

    MySQL-MySQL架构 MySQL逻辑架构图如下: Connectors连接器:负责跟客户端建立连接: Management Serveices & Utilities系统管理和控制工具: ...

  2. 力扣26(java&python)-删除有序数组中的重复项(简单)

    题目: 给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度.元素的 相对顺序 应该保持 一致 . 由于在某些语言中不能改变数组的长 ...

  3. 力扣34(java)-在排序数组中查找元素的第一个和最后一个位置(中等)

    题目: 给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target.请你找出给定目标值在数组中的开始位置和结束位置. 如果数组中不存在目标值 target,返回 [-1, -1]. 你 ...

  4. 重磅发布 阿里云数据中台全新产品DataTrust聚焦企业数据安全保障

    简介: DataTrust(隐私增强计算产品)是基于阿里云底层多项基础安全能力,经过阿里云数据中台丰富的客户业务实践,构建的一款为企业数据安全流通的产品. 随着包括零售.制造.金融等多行业数字化转型加 ...

  5. dotnet OpenXML 读取形状轮廓线条样式序号超过主题样式列表数

    在 OpenXML 中,默认的形状可以通过指定 LineReference 让形状使用文档主题里面的样式.文档主题里面包含多个样式,在形状里面指定样式通过的是序号的方法,如果在形状里面指定的序号超过了 ...

  6. WPF 如何知道当前有多少个 DispatcherTime 在运行

    在 WPF 调试中,对于 DispatcherTimer 定时器的执行,没有直观的调试方法.本文来告诉大家如何在 WPF 中调试当前主线程有多少个 DispatcherTimer 在运行 在 WPF ...

  7. 2019-8-31-dotnet-使用-Environment.FailFast-结束程序

    title author date CreateTime categories dotnet 使用 Environment.FailFast 结束程序 lindexi 2019-08-31 16:55 ...

  8. 特权同学笔记-《边练边学》-在QP里调用modelsim的步骤

    在QP里调用Modelsim需要先设置仿真参数和工具路径. 在QP调用modelsim的步骤 1. 在QP里建立工程,代码,分析综合:2. 添加testbench代码,processing-start ...

  9. 函数编程:强大的 Stream API

    函数编程:强大的 Stream API 每博一文案 只要有人的地方,世界就不会是冰冷的,我们可以平凡,但绝对不可以平庸. ------ <平凡的世界> 人活着,就得随时准备经受磨难.他已经 ...

  10. Solution Set - 组合计数

    CF40E Number Table Link&Submission. 显然 \(n,m\) 奇偶性不同时无解.奇偶性相同时,假设有一行全为空,剩下每行至少一个有空,则除这些位置外没有限制的位 ...