一本通差分约束入门题

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

#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;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

随身wifi排行榜前三名大对比,格行vs华为vs中兴随身wifi谁是你心中的第一名?

第一名&#xff1a;格行随身wifi 品牌实力&#xff1a;随身wifi国内领跑品牌&#xff0c;深耕物联网15年&#xff0c;专注研发随身wifi&#xff0c;国内市场占有率较高&#xff0c;综合实力和口碑领先行业其他品牌。 产品优势&#xff1a;小巧便捷&#xff0c;彩屏显示&#…

SGE 如何影响 SEO?

虽然谷歌的 “Search Generative Experience”&#xff08;SGE&#xff09;并不保证一定会推出&#xff08;谷歌以其废弃项目的坟场而闻名&#xff09;&#xff0c;但 SEO 人员不能忽视它&#xff0c;因为它预计会对有机搜索产生负面影响&#xff1a; 可见性流量转化率收入 S…

Vue js封装接口

天梦星服务平台 (tmxkj.top)https://tmxkj.top/#/ 1.安装axios npm install axios -g 2.在src下新建一个Api文件夹,再创建一个js文件 import axios from axios let configuration {url:"http://localhost:9090" } /*** 请求项目数据的请求体*/ async function h…

记录在项目中引用本地的npm包

1、先把需要的包下载下来&#xff0c;以Photo Sphere Viewer 为引用的npm包、项目以shpereRepo为例子 git clone https://github.com/mistic100/Photo-Sphere-Viewer2、拉下代码后修改之后执行 ./build.sh build.sh #!/usr/bin/env bashyarn run build targetDir"../sh…

桌面便签软件哪个好?哪种好用便签实用?

在繁忙的工作和生活中&#xff0c;能够在桌面上直接记录事项&#xff0c;无疑会为我们带来极大的便利。这时&#xff0c;一款好用的桌面便签软件就显得尤为重要。它能够轻松助我们一臂之力&#xff0c;让我们的工作和生活更加有条不紊。 在众多便签软件中&#xff0c;敬业签便…

k8s入门到实战(四)—— k8s核心概念以及基本操作命令详细介绍

k8s 核心概念及操作命令 namespace&#xff08;命名空间&#xff0c;简称 ns&#xff09; k8s 资源创建的两种方式&#xff1a;使用命令行创建、使用 yaml 文件创建 什么是 ns 在 k8s 中&#xff0c;ns 是一种用于对集群资源进行逻辑分组和隔离的机制。它允许将 k8s 集群划…

海量数据处理项目-账号微服务和流量包数据库表+索引规范(下)

海量数据处理项目-账号微服务和流量包数据库表索引规范&#xff08;下&#xff09; 第2集 账号微服务和流量包数据库表索引规范讲解《下》 简介&#xff1a;账号微服务和流量包数据库表索引规范讲解 账号和流量包的关系&#xff1a;一对多traffic流量包表思考点 海量数据下每…

迭代器模式(统一对集合的访问方式)

目录 前言 UML plantuml 类图 实战代码 Iterator ArrayList Client 自定义迭代器 TreeNode TreeUtils Client 前言 在实际开发过程中&#xff0c;常用各种集合来存储业务数据并处理&#xff0c;比如使用 List&#xff0c;Map&#xff0c;Set 等等集合来存储业务数…

一键采集主流电商平台商品详情数据以及接入演示示例

一键抓取电商平台数据通常涉及到网络爬虫技术&#xff0c;该技术可以自动化地从网页上提取信息。不过要注意&#xff0c;任何形式的数据采集都应遵守相关网站的使用条款和隐私政策&#xff0c;以及当地的法律法规。 以下是一个概念性的步骤说明&#xff0c;展示如何通过API采集…

数据结构-树-006

1二叉树 1.1目标二叉树 前序遍历&#xff1a;ABDHIEJCFKG 中序遍历&#xff1a;HDIBEJAFKCG 后序遍历&#xff1a;HIDJEBKFGCA 层序遍历&#xff1a;ABCDEFGHIJK运行结果&#xff1a; 运行结果符合目标二叉树的深度优先&#xff08;前序遍历&#xff0c;中序遍历&#xff0c;…

Bert基础(八)--Bert实战之理解Bert微调

到目前为止&#xff0c;我们已经介绍了如何使用预训练的BERT模型。现在&#xff0c;我们将学习如何针对下游任务微调预训练的BERT模型。需要注意的是&#xff0c;微调并非需要我们从头开始训练BERT模型&#xff0c;而是使用预训练的BERT模型&#xff0c;并根据任务需要更新模型…

基于单片机的太阳能充电系统设计

摘要:本文所设计的太阳能充电系统主要由以下几个模块组成:STC89C52 主控模块、TP4056 充电电路、电压AD 采集模块、LCD1602 液晶显示模块和太阳能充电电池等组成。此太阳能充电器制作简单,性价比高,性能稳定。 关键词:LCD1602;太阳能充电系统;ADC0832 太阳能充电系统的充…

【C++】基础:STL容器库

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍STL容器库。 学其所用&#xff0c;用其所学。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xff0c;下次更新不迷路&#x1f95…

vue动态渲染本地路径图片不显示的解决方案,v-fro 渲染本地图片路径不显示

1、第一种解决方法 如果直接使用本地路径渲染是渲染不出来的&#xff0c;因为这种情况下渲染时会发送网络请求加你的本地地址所以渲染不出来。 这样怎么能找到路径&#xff1f;解决方案如下 // 渲染正常渲染即可 <div v-for"(item, index) in imgPath" :key&quo…

【WEEK4】 【DAY4】AJAX第一部分【中文版】

2024.3.21 Thursday 目录 8.AJAX8.1.简介8.2.伪造ajax8.2.1.新建module&#xff1a;springmvc-06-ajax8.2.2.添加web支持&#xff0c;导入pom依赖8.2.2.1.修改web.xml8.2.2.2.新建jsp文件夹 8.2.3.新建applicationContext.xml8.2.4.新建AjaxController.java8.2.5.配置Tomcat8.…

【MATLAB源码-第9期】基于matlab的DQPSK的误码率BER和误符号率SER仿真。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 DQPSK信号的解调与2DPSK信号的解调类似&#xff0c;也有两种方法&#xff0c;分别是极性比较法和相位比较法 极性比较法。其原理方框图如下图所示。由于DQPSK信号可以看做是两路2DPSK信号的合成&#xff0c;解 调时也可以分别…

Python环境下5种TE过程(Tennessee Eastman Process)故障检测方法

田纳西-伊斯特曼过程&#xff0c;也被称作TE过程&#xff0c;主要模拟美国田纳西州一家名为伊斯曼的化工公司的化工过程。TE过程是一个高度复杂、非线性和多变量的过程&#xff0c;涉及到多个阶段和多个控制参数&#xff0c;其中某些参数会相互影响&#xff0c;因此&#xff0c…

读研究生的时候早恋被导师发现了怎么办?

研究生早恋这事&#xff0c;危险重重&#xff0c;比走钢丝还紧张&#xff0c;这根本就是走在科研生涯的悬崖边上&#xff0c;随时都有掉下去的危险。 让我们来详细分析一下为什么你应该立刻收心&#xff0c;专注于你的实验和论文&#xff0c;而不是浪费时间在所谓的“早恋”上。…

[2023] 14届

1.日期统计 题意 1.日期统计 - 蓝桥云课 (lanqiao.cn) 思路 用dfs扫 对每一个位进行限制 花了一个小时 注意把答案枚举出来 对应一下看到底对不对 code #include<iostream> #include<cstdio> #include<stack> #include<vector> #include<al…

电脑桌面记事本便签软件,记事本软件哪个好用

正在电脑前忙碌工作&#xff0c;突然想起今晚有个重要的会议&#xff0c;或者是明天有一个重要的任务需要完成&#xff0c;但是手头的工作又无法让你离开电脑&#xff0c;这时候&#xff0c;你多么希望有一个便捷的电脑桌面记事本便签软件&#xff0c;可以让你快速记录下这些重…