一本通差分约束入门题

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

#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;文末点击卡片…

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

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

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

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

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

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

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

大家有没有想过这个问题&#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的 双指针 成环问…

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

今天我们来介绍一下服务器的基础知识 一、服务器硬件基础知识 组件说明中央处理器&#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…

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

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

旺店通·企业版和金蝶云星空接口打通对接实战

旺店通企业版和金蝶云星空接口打通对接实战 ​​ ​​ 对接系统&#xff1a;旺店通企业版 旺店通是北京掌上先机网络科技有限公司旗下品牌&#xff0c;国内的零售云服务提供商&#xff0c;基于云计算SaaS服务模式&#xff0c;以体系化解决方案&#xff0c;助力零售企业数字化…

2024-2028年中国丙二醇乙醚(PE)市场行情监测及未来发展前景研究报告

丙二醇乙醚&#xff08;PE&#xff09;又称1-乙氧基-2-丙醇&#xff0c;化学式为C5H12O2&#xff0c;是一种有机化合物。丙二醇乙醚外观呈无色透明液体&#xff0c;微含醚气味&#xff0c;能与水和多数有机溶剂混溶&#xff0c;微溶于乙酸乙酯和氯仿。丙二醇乙醚具有吸湿性、挥…

蓝桥杯刷题(十四)

1.小平方 代码 n int(input()) count0 def f(x)->bool: # 判断条件return True if x**2%n<n/2 else False for i in range(1,n): # 遍历[1,n-1]&#xff0c;符合题意计数加一if f(i):count1 print(count)2.3的倍数 代码 a int(input()) b int(input()) c int(input…

QT环境搭建

学习QT 一、QT环境搭建二、QT的SDK下载三、认识QT SDK 中自带的一些程序 一、QT环境搭建 QT开发环境&#xff0c;需要安装三个部分。 c编译器&#xff08;gcc、cl.exe……不是visual studio&#xff09;QT SDK&#xff08;QT SDK里面已经内置了C编译器&#xff1b;SDK就是软件…

C++算法知识总结

算法知识总结 1 算法竞赛常用函数及算法2 前缀和以及差分模板3 区间更新前缀和差分实战4 双指针模板4 二分答案5 高精度6 快速幂及链式前向星7 区间最大值/最小值8 异或运算9 回溯、取模、日期计算10 DFS基础11 DFS剪枝12 DFS遍历连通图13 位运算14 记忆化搜索15 动态规划及前…

2024 年广西职业院校技能大赛高职组《云计算应用》赛项赛题第 4 套

#需要资源或有问题的&#xff0c;可私博主&#xff01;&#xff01;&#xff01; #需要资源或有问题的&#xff0c;可私博主&#xff01;&#xff01;&#xff01; #需要资源或有问题的&#xff0c;可私博主&#xff01;&#xff01;&#xff01; 某企业根据自身业务需求&…

Android源码阅读WorkMangaer - 4

前言 由于笔者目前水平限制&#xff0c;表达能力有限&#xff0c;尽请见谅。 WorkManager 是 Android Jetpack 库的一部分&#xff0c;提供了一种向后兼容的方式来安排可延迟的异步任务&#xff0c;这些任务即使在应用退出或设备重启后也应该继续执行&#xff0c;它是 Androi…

Java中 List 集合,通过 Stream 流进行排序总结

一、数据准备 public class OrderTest {private String channelCode;private BigDecimal rate;// 省略 getter、setter、toString()、constructor }List<OrderTest> orderTestList new ArrayList<>();OrderTest z09 new OrderTest("Z09", new BigDeci…