一本通差分约束入门题

最关键的就是找好所有的要满足的不等式条件,注意隐含的条件还有一点就是注意没有源点 建立源点

#2436. 「SCOI2011」糖果

#include<bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int,int>;
#define int long long
const int N = 5e5+10,M = 2e6+10;
const int inf = 0x3f3f3f3f;
const int mod = 1e9+7;
int gcd(int a,int b){return b?a:gcd(b,a%b);}
int lcm(int a,int b){return a*b/gcd(a,b);}
int qmi(int a,int b,int mod){int res=1;while(b){if(b&1)res=res*a%mod;b>>=1;a=a*a%mod;}return res;}int n,q,m;
int dist[N];
bool vis[N];
int cnt[N];
int e[M],ne[M],w[M],h[N],idx;
void add(int a,int b,int c){e[idx] = b,ne[idx] = h[a],w[idx] = c,h[a] = idx++;
}void spfa()
{stack<int>q;memset(dist,-0x3f,sizeof dist);dist[0] = 0;vis[0] = true;q.push(0);//int count = 0;while(q.size()){auto t = q.top();q.pop();vis[t] = false;for(int i=h[t];~i;i=ne[i]){int j = e[i];if(dist[j]<dist[t]+w[i]){dist[j] = dist[t]+w[i];cnt[j]++;if(cnt[j]>=n){cout<<-1;return;}//if(++count>100000){cout<<-1;return;}if(!vis[j]){vis[j] = true;q.push(j);}}}}int res = 0;for(int i=1;i<=n;i++)res+=dist[i];cout<<res;}void solve()
{cin>>n>>m;memset(h,-1,sizeof h);for(int i=1;i<=m;i++){int a,b,c;cin>>c>>a>>b;if(c==1){add(a,b,0),add(b,a,0);}else if(c==2){add(a,b,1);}else if(c==3){add(b,a,0);}else if(c==4){add(b,a,1);}else add(a,b,0);}for(int i=1;i<=n;i++)add(0,i,1);spfa();}signed main()
{ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int _;//cin>>_;_ = 1;while(_--)solve();return 0;
}

#10087. 「一本通 3.4 例 1」Intervals

#include<bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int,int>;
#define int long long
const int N = 2e5+10;
const int inf = 0x3f3f3f3f;
const int mod = 1e9+7;
int gcd(int a,int b){return b?a:gcd(b,a%b);}
int lcm(int a,int b){return a*b/gcd(a,b);}
int qmi(int a,int b,int mod){int res=1;while(b){if(b&1)res=res*a%mod;b>>=1;a=a*a%mod;}return res;}int n,q,m;int e[N],ne[N],w[N],h[N],idx;
void add(int a,int b,int c){e[idx] = b,ne[idx] = h[a],w[idx] = c,h[a] = idx++;
}int dist[N];
bool vis[N];
int mx;
void spfa()
{memset(dist,-0x3f,sizeof dist);queue<int>q;q.push(0);dist[0] = 0;vis[0] = true;while(q.size()){auto t = q.front();q.pop();vis[t] = false;//cout<<t<<"\n";for(int i=h[t];~i;i=ne[i]){int j = e[i];if(dist[j]<dist[t]+w[i]){dist[j] = dist[t]+w[i];if(!vis[j]){vis[j] = true;q.push(j);}}}}cout<<dist[50001];
}void solve()
{memset(h,-1,sizeof h);cin>>m;for(int i=1;i<=50001;++i){add(i-1,i,0),add(i,i-1,-1);}while(m--){int a,b,c;cin>>a>>b>>c;a++,b++;add(a-1,b,c);}spfa();}signed main()
{ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int _;//cin>>_;_ = 1;while(_--)solve();return 0;
}

#10090. 「一本通 3.4 练习 2」布局 Layout

#include<bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int,int>;
#define int long long
const int N = 1e5+10;
const int inf = 0x3f3f3f3f;
const int mod = 1e9+7;
int gcd(int a,int b){return b?a:gcd(b,a%b);}
int lcm(int a,int b){return a*b/gcd(a,b);}
int qmi(int a,int b,int mod){int res=1;while(b){if(b&1)res=res*a%mod;b>>=1;a=a*a%mod;}return res;}int n,q,m1,m2;
int dist[N],cnt[N];
bool vis[N];
int e[N],ne[N],w[N],h[N],idx;
void add(int a,int b,int c){e[idx] = b,ne[idx] = h[a],w[idx] = c,h[a] = idx++;
}bool spfa(int sz)
{memset(dist,0x3,sizeof dist);memset(cnt,0,sizeof cnt);memset(vis,0,sizeof vis);queue<int>q;for(int i=1;i<=sz;++i){dist[i] = 0;q.push(i);vis[i] = true;}while(q.size()){auto t = q.front();q.pop();vis[t] = false;for(int i=h[t];~i;i=ne[i]){int j = e[i];if(dist[j]>dist[t]+w[i]){dist[j] = dist[t]+w[i];cnt[j]++;if(cnt[j]>=n)return true;if(!vis[j]){vis[j] = true;q.push(j);}}}}return false;}void solve()
{cin>>n>>m1>>m2;memset(h,-1,sizeof h);for(int i=0;i<=n;++i)add(i+1,i,0);while(m1--){int a,b,c;cin>>a>>b>>c;if(a>b)swap(a,b);add(a,b,c);}	while(m2--){int a,b,c;cin>>a>>b>>c;if(a>b)swap(a,b);add(b,a,-c);}if(spfa(n))cout<<-1;else{spfa(1);if(dist[n]>inf/2)cout<<-2;else cout<<dist[n];}}signed main()
{ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int _;//cin>>_;_ = 1;while(_--)solve();return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/771490.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

视觉图像处理与FPGA实现第七次作业——生成512深度、8位宽度的双端口存储器IP,并分析IP包资料构成

一、生成IP 打开Vivado&#xff0c;点击IP Catalog&#xff0c;搜索memory&#xff0c;双击对应IP核 调整参数为——512深度、8位宽度&#xff0c;双端口&#xff0c;然后一直默认点击OK 二、分析IP构成 查看IP细节&#xff0c;查看设计资源和仿真资源 双击打开文件 设计文件…

【Java程序设计】【C00366】基于(JavaWeb)Springboot的纹理生产图片系统(有论文)

TOC 博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业六年&#xff0c;已经做了六年的毕业设计程序开发&#xff0c;开发过上千套毕业设计程序&#xff0c;博客中有上百套程序可供参考&#xff0c;欢迎共同交流学习。 项目简介 项目获取 &#x1f345;文末点击卡片…

Mysql数据库SQL从一个表更新至另一个表

1、从一个表更新到另外一个表 方法一 UPDATE temp_x a, temp_y b SET a.c_amount b.c_amount WHERE a.c_id b.c_id; 方法二、 UPDATE temp_x a SET a.c_amount (SELECT b.c_amount FROM temp_y b WHERE b.c_id a.c_id) 2、多字段排序 if test"dto.mindSort!null …

20240325数据驱动的机器学习预测单层二维材料力学性能

本论文使用模型主要有Mo,W,S,Se原子组成的单层二维材料。大小为30nmx30nm&#xff0c;中间有切口&#xff0c;切口大小从无切口以1nm增长到5nm&#xff0c;加载方向垂直于切口方向&#xff0c;并且分锯齿型和扶手椅型方向。 使用MD对模型进行拉伸&#xff0c;一共288个模型。 …

简明 Python 教程(第7章 数据结构)

本章将详细介绍Python中的三种主要内置数据结构&#xff1a;列表&#xff08;list&#xff09;、元组&#xff08;tuple&#xff09;和字典&#xff08;dict&#xff09;。这些数据结构是Python编程中处理数据集合的基础&#xff0c;它们提供了不同的方式来存储和操作数据。 列…

【数据存储】TIDB和MySQL的区别

1.TIDB和MySQL对比 对比内容MySQLTiDB架构设计一个传统的单机数据库系统&#xff0c;采用主从复制和分区表等方式来实现水平扩展一个分布式的 NewSQL 数据库&#xff0c;采用分布式存储和分布式事务等技术&#xff0c;支持水平扩展和高可用性事务支持 InnoDB 存储引擎来支持事…

Python环境配置中的若干问题总结

bash: pip: command not found. curl https://bootstrap.pypa.io/get-pip.py > get.pip.py 如出现如下报错可根据提升更换下载链接&#xff1a;This script dose not work on Python2.7 The minimum supported Python version id 3.7. Please use https://bootstrap.pypa.…

【软考】系统可维护性的评价指标

目录 1. 可理解性2. 可测试性3.可修改性 1. 可理解性 1.指别人能理解系统的结构、界面、功能和内部过程的难易程度。模块化、详细设计文档、结构化设计和良好的高级程序设计语言等都有助于提高可理解性。 2. 可测试性 1.诊断和测试的容易程度取决于易理解的程度。2.好的文档…

LeetCode3. 无重复字符的最长子串(Java)

给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长 子串 的长度。 示例 1: 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc"&#xff0c;所以其长度为 3。示例 2: 输入: s "bbbbb" 输出: 1 解释: 因为…

监控NVIDIA GPU显卡占用状态的命令

一、使用nvidia-smi命令 NVIDIA 提供的用于管理和监控 NVIDIA GPU 设备的命令行工具&#xff0c;可查看当前系统中 NVIDIA GPU 的使用情况、温度、内存占用等信息。 [注]&#xff1a;Linux 和Windows都可支持此命令 nvidia-smi 二、使用nvitop命令 nvitop 是一个基于 NVIDIA …

面试算法-119-用栈实现队列

题目 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作&#xff08;push、pop、peek、empty&#xff09;&#xff1a; 实现 MyQueue 类&#xff1a; void push(int x) 将元素 x 推到队列的末尾 int pop() 从队列的开头移除并返回元素 int peek() 返回…

【学习】软件测试中误区汇总分析

大家有没有想过这个问题&#xff1a;软件测试中有哪些误区呢&#xff1f;想起这个题目&#xff0c;是因为最近遇到好几次关于这方面的讨论。发觉即便做过几年测试的老员工也或多或少有些这方面的困惑。当然一家之言&#xff0c;仅作抛砖引玉之谈。 误区一&#xff1a;测试就是…

【Java程序设计】【C00364】基于Springboot的美发管理系统(有论文)

基于Springboot的美发管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 项目获取 &#x1f345;文末点击卡片获取源码&#x1f345; 开发环境 运行环境&#xff1a;推荐jdk1.8&#xff1b; 开发工具&#xff1a;eclipse以及idea&…

【双指针】Leetcode 202.快乐数

题目解析 Leetcode 202.快乐数 看完题目描述相信大家已经知晓题目的含义&#xff0c;我们通过一张图再剖析一下题目含义 快乐数或者非快乐数都是可以成环的&#xff0c;这个是数学上已经证明了的。所以这道题的最后含义就是分辨出环中全部是1或者全部没有1的 双指针 成环问…

ETH 智能合约Gas文章整理

ETH - 智能合约&Gas文章整理 通过这些文章&#xff0c;可以了解ETH网络中Gas费的用途&#xff0c;种类以及交易优化 可以了解智能合约的Gas消耗 分类文章地址&#x1f951;ETH - Smart Contact智能合约 之 ERC-20&#x1f346;ETH - Smart Contact智能合约 之 部署ERC-20&a…

服务器基础知识(物理服务器云服务器)

今天我们来介绍一下服务器的基础知识 一、服务器硬件基础知识 组件说明中央处理器&#xff08;CPU&#xff09;CPU是服务器的大脑&#xff0c;负责执行计算任务和指令。服务器通常配备多个CPU核心&#xff0c;以支持并行处理和提高性能。关键的CPU性能指标包括时钟频率、核心数…

大数据毕业设计Python+Spark知识图谱高考志愿推荐系统 高考数据分析 高考可视化 高考大数据 计算机毕业设计 机器学习 深度学习 人工智能 高考预测

意义 高考是中国的大学招生的学术资格考试&#xff0c;在目前看来&#xff0c;高考的考试类型有两种&#xff0c;一种是文理分科&#xff0c;另一种是新高考模式。传统的文理分科是将学生分成两个类型&#xff0c;一种是文科&#xff0c;除了语数外三门课以外需要学习政史地&am…

【Flask】用户身份认证

Flask 用户身份认证 项目代码见&#xff1a;GitHub - euansu123/FlaskMarket 前提条件 # flask-bcrypt 用户密码加密存储 pip install flask_bcrypt -i https://pypi.tuna.tsinghua.edu.cn/simple/ # flask提供的用户登录方法 pip install flask_login -i https://pypi.tuna…

notepad++使用小技巧

关于Notepad正则表达式匹配查找以xx开头以xx结尾包含特殊符号需转义的处理方法关于Notepad正则表达式匹配查找以xx开头以xx结尾包含特殊符号需转义的处理方法_notepad正则匹配开头和结尾-CSDN博客

Camtasia2024永久免费专业的屏幕录制和视频剪辑软件

Camtasia2024专业的屏幕录制和视频剪辑软件&#xff0c;3000多万专业人士在全球范围内使用Camtasia展示产品&#xff0c;教授课程&#xff0c;培训他人&#xff0c;以更快的速度和更吸引人的方式进行沟通和屏幕分享。使您在Windows和Mac上进行录屏和剪辑创作专业外观的视频变得…