单源最短路的建图
1.热浪
信息学奥赛一本通(C++版)在线评测系统 (ssoier.cn)
http://ybt.ssoier.cn:8088/problem_show.php?pid=1379
很裸的单源最短路问题,n=2500,可以用dijksta或者spfa都能过,下面展示spfa的做法
#include<bits/stdc++.h>
using namespace std;
const int N=2510,M=6200*2+10;
int h[N],e[M],ne[M],w[M],idx;
int dist[N];
bool st[N];
int S,E;
void add(int a,int b,int c)
{w[idx]=c,e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
int spfa()
{memset(dist,0x3f,sizeof dist);dist[S]=0;queue<int> q;q.push(S);st[S]=true;while(q.size()){int t=q.front();q.pop();st[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];if(!st[j]){q.push(j);st[j]=true;}}}}return dist[E];
}
int main()
{int T,m;cin>>T>>m>>S>>E;memset(h,-1,sizeof h);for(int i=0;i<m;i++){int a,b,c;cin>>a>>b>>c;add(a,b,c),add(b,a,c);}cout<<spfa()<<endl;return 0;
}
2.信使
信息学奥赛一本通(C++版)在线评测系统 (ssoier.cn)
由于数据较小可以用Floyd算法求两两之间的最短路,然后后面更新一遍一号点到每一个点的最小距离即可
#include<bits/stdc++.h>
using namespace std;
const int N=110;
int dist[N][N];
int n,m;
int flyd()
{for(int k=1;k<=n;k++)for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)dist[i][j]=min(dist[i][j],dist[i][k]+dist[k][j]);int ans=0;for(int i=2;i<=n;i++) ans=max(dist[1][i],ans);return ans;
}
int main()
{cin>>n>>m;memset(dist,0x3f,sizeof dist);for(int i=0;i<m;i++){int a,b,c;cin>>a>>b>>c;dist[a][b]=dist[b][a]=min(dist[a][b],c);}int t=flyd();if(t==0x3f3f3f3f) puts("-1");else cout<<t<<endl;return 0;
}
3.香甜的黄油
1127. 香甜的黄油 - AcWing题库
枚举每一个农场,然后算一下总距离,然后更新每一个农场的最小值,用spfa求最小距离
#include<bits/stdc++.h>
using namespace std;
const int N=810,M=3000;
int h[N],e[M],ne[M],w[M],idx;
int id[N],dist[N];
int n,p,c;
bool st[N];
void add(int a,int b,int c)
{w[idx]=c,e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
int spfa(int s)
{memset(dist,0x3f,sizeof dist);memset(st,0,sizeof st);queue<int> q;q.push(s);dist[s]=0;st[s]=true;while(q.size()){int t=q.front();q.pop();st[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];if(!st[j]){q.push(j);st[j]=true;}}}}int ans=0;for(int i=1;i<=n;i++){int j=id[i];if(dist[j]==0x3f3f3f3f) return 0x3f3f3f3f;ans+=dist[j];}return ans;
}
int main()
{cin>>n>>p>>c;memset(h,-1,sizeof h);for(int i=1;i<=n;i++) cin>>id[i];for(int i=0;i<c;i++){int a,b,c;cin>>a>>b>>c;add(a,b,c),add(b,a,c);}int ans=0x3f3f3f3f;for(int i=1;i<=p;i++) ans=min(ans,spfa(i));cout<<ans<<endl;return 0;
}
4.最小花费
信息学奥赛一本通(C++版)在线评测系统 (ssoier.cn)
算乘法的最短路,也就是把加法改成乘法即可,在求乘的最大值,dist初始化为0就行,用spfa可以过
#include<bits/stdc++.h>
using namespace std;
const int N=2010,M=2e5+10;
int h[N],e[M],ne[M],idx;
double w[M];
double dist[N];
int n,m;
int A,B;
bool st[N];
void add(int a,int b,double c)
{w[idx]=c,e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
double spfa()
{queue<int> q;q.push(A);dist[A]=1;st[A]=true;while(q.size()){int t=q.front();q.pop();st[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];if(!st[j]){q.push(j);st[j]=true;}}}}return dist[B];
}
int main()
{cin>>n>>m;memset(h,-1,sizeof h);for(int i=0;i<m;i++){int a,b;double c;cin>>a>>b>>c;c=(100-c)/100;add(a,b,c),add(b,a,c);}cin>>A>>B;double ans=100.0/spfa();printf("%.8lf",ans);return 0;
}
5.最优乘车
920. 最优乘车 - AcWing题库
https://www.acwing.com/problem/content/description/922/
-
#include<bits/stdc++.h> using namespace std; const int N=510; int stop[N]; int dist[N]; bool g[N][N]; int m,n; int q[N]; int bfs()//用bfs求最短路,因为边权只有0 1.0表示不能乘坐的到,1表示能乘坐的到 {memset(dist,0x3f,sizeof dist);dist[1]=0;q[0]=1;int hh=0,tt=0;while(hh<=tt){int t=q[hh++];for(int i=1;i<=n;i++)if(g[t][i]&&dist[i]>dist[t]+1){dist[i]=dist[t]+1;q[++tt]=i;}}return dist[n]; } int main() {cin>>m>>n;string line;getline(cin,line);while(m--){getline(cin,line);stringstream ssin(line);int cnt=0,p;while(ssin>>p) stop[cnt++]=p;//将每个站点都连起来,说明有一条路能够通往for(int i=0;i<cnt;i++)for(int j=i+1;j<cnt;j++)g[stop[i]][stop[j]]=true;}int t=bfs();if(t==0x3f3f3f3f) puts("NO");else cout<<bfs()-1<<endl;return 0; }6.昂贵的聘礼
903. 昂贵的聘礼 - AcWing题库
把0当作虚拟起点,假如是直接买的话就与0连条边,假如可以由其他物品替换的话加换的那个物品连被换的物品一条边
等级制度就枚举一个区间内的等级制度即可。然后求最小值
-
#include<bits/stdc++.h> using namespace std; const int N=110; int m,n; int w[N][N],level[N]; bool st[N]; int dist[N]; int dijkstra(int down,int up)//一个是最小等级,一个是最大等级 {memset(dist,0x3f,sizeof dist);memset(st,0,sizeof st);dist[0]=0;for(int i=1;i<=n;i++){int t=-1;for(int j=0;j<=n;j++)if(!st[j]&&(t==-1||dist[j]<dist[t]))t=j;if(st[t]) continue;st[t]=true;for(int j=1;j<=n;j++)if(level[j]>=down&&level[j]<=up)//等级得在这个范围dist[j]=min(dist[j],dist[t]+w[t][j]);}return dist[1];//返回购买第一个物品的最小值 } int main() {cin>>m>>n;memset(w,0x3f,sizeof w);for(int i=1;i<=n;i++) w[i][i]=0;for(int i=1;i<=n;i++){int p,cnt;cin>>p>>level[i]>>cnt;w[0][i]=min(w[0][i],p);//从虚拟原点连一条边到物品iwhile(cnt--)//替代物{int id,cost;cin>>id>>cost;w[id][i]=min(w[id][i],cost);//从替代物连一条边到该物品}}int res=0x3f3f3f3f;for(int i=level[1]-m;i<=level[1];i++)//最小枚举level[1]-m,最大枚举level[1],因为要覆盖level[1]且长度为mres=min(res,dijkstra(i,i+m));cout<<res<<endl;return 0; }
相关文章:
单源最短路的建图
1.热浪 信息学奥赛一本通(C版)在线评测系统 (ssoier.cn)http://ybt.ssoier.cn:8088/problem_show.php?pid1379 很裸的单源最短路问题,n2500,可以用dijksta或者spfa都能过,下面展示spfa的做法 #include<bits/stdc.h> usi…...
MyBatis基本操作及SpringBoot单元测试
目录 一、什么是单元测试? 1.1 单元测试的好处 1.2 单元测试的实现步骤 1.2.1 生成单元测试类: 1.2.2 SpringBootTest注解 1.2.3 检验方法结果: 二、利用MyBatis实现查询操作 2.1单表查询 2.2 参数占位符 #{} 和 ${} 2.2.1 ${} 字符…...
Linux之创建进程、查看进程、进程的状态以及进程的优先级
文章目录 前言一、初识fork1.演示2.介绍3.将子进程与父进程执行的任务分离4.多进程并行 二、进程的状态1.进程的状态都有哪些?2.查看进程的状态2.运行(R)3.阻塞4.僵尸进程(Z)1.僵尸状态概念2.为什么要有僵尸状态&#…...
k8s部署rabbitmq
docker pull rabbitmq:3.9.28-management 1.部署模板 apiVersion: v1 kind: Service metadata:name: rabbitmq spec:ports:- name: amqpport: 5672targetPort: 5672- name: managementport: 15672targetPort: 15672selector:app: rabbitmq---apiVersion: apps/v1 kind: Statef…...
关于QGroundControl的软件架构的理解
首先QGC是基于QT平台开发,个人理解软件架构即为项目前后端结构,以及前后端数据交互的逻辑。下面是对QGroundControl源码的一些个人理解,写这个博客只是为了记录下来,防止时间久了忘记,过程中看了一些大佬的博客来帮助理…...
Android 文本识别:MLKIT + PreviewView
随着移动设备的普及和摄像头的高像素化,利用相机进行文本识别成为了一种流行的方式。MLKit 是 Google 提供的一款机器学习工具包,其中包含了丰富的图像和语言处理功能,包括文本识别。PreviewView 是 Android Jetpack 的一部分,它提…...
刮泥机的分类有哪些及组成部分
刮泥机的分类有哪些及组成部分 刮泥机的分类: 刮泥机主要包括:周边传动刮泥机、中心传动浓缩刮泥机。 1、中心传动浓缩刮泥机:主要由溢流装置、大梁及拦杆、进口管、传动装置、电器箱、稳流筒、主轴、浮渣耙板、刮集装置、水下轴承、小刮刀、…...
Qt编程基础 | 第六章-窗体 | 6.2、VS导入资源文件
一、VS导入资源文件 1.1、导入资源文件 步骤一: 将所有图片放到各自文件夹下,并将文件夹拷贝到资源文件(.qrc文件)的同级目录下,如下: 步骤二: 新建VS项目的时候,系统会自动建好一…...
NET框架程序设计-第4章类型基础
4.1 所有类型的基类型:System.Object CLR 要求每个类型最终都要继承自 System.Object 类型。 两种类型定义: 1)隐式继承 //隐式继承 Object class Employee{}2)显式继承 class Employee:System.Object{}System.Object 主要的公…...
Java设计模式-备忘录模式
简介 在软件开发中,设计模式是为了解决常见问题而提出的一种经过验证的解决方案。备忘录模式(Memento Pattern)是一种行为型设计模式,它允许我们在不破坏封装性的前提下,捕获和恢复对象的内部状态。 备忘录模式是一种…...
Zookeeper集群 + Kafka集群
Zookeeper 概述 Zookeeper 定义 Zookeeper是一个开源的分布式的,为分布式框架提供协调服务的Apache项目。 Zookeeper 工作机制 Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数…...
“邮件营销新趋势,这个平台让你收获颇丰!
随着各媒体平台的迅速发展,2023年大家更专注于视频营销、网红营销、直播营销等营销方式。可以见得,数字媒介手段的发展,对于营销方式也产生了巨大的影响。但是,企业在拥抱新兴的营销方式的同时,也不要忽视传统的营销方…...
Python列表推导
列表推导式 列表推导式创建列表的方式更简洁。常见的用法为,对序列或可迭代对象中的每个元素应用某种操作,用生成的结果创建新的列表;或用满足特定条件的元素创建子序列。 例如,创建平方值的列表: squares [] for …...
git使用查看分支、创建分支、合并分支
一、查看分支 查看的git命令如下: git branch 列出本地已经存在的分支,并且当前分支会用*标记 git branch -r 查看远程版本库的分支列表 git branch -a 查看所有分支列表(包括本地和远程,remotes/开头的表示远程分支)…...
vue3.0与vue2.0
一、生命周期的变化 1.vue2.响应式架构 2.vue3.0 响应式架构图 Vue3.0响应式框架在设计上,将视图渲染和数据响应式完全分离开来。将响应式核心方法effect从原有的Watcher中抽离。这样,当我们只需要监听数据响应某种逻辑回调(例如监听某个text属性的变化…...
HTML 中的常用标签用法
HTML是构建Web页面的基础语言,其中包含许多不同类型的标签。这些标签由尖括号包围,以指示浏览器如何呈现文本。下面是HTML中的一些常用标签以及它们的使用方法: 标题标签(h1-h6) 标题标签用于标识页面内容的标题&…...
【C++】指针 - 定义和使用,所占内存空间,空指针,野指针,const 修饰指针,指针和数组,指针和函数
文章目录 1. 定义和使用2. 所占内存空间3. 空指针4. 野指针5. const 修饰指针6. 指针和数组7. 指针和函数 1. 定义和使用 数据类型 * 变量名; 指针的作用是,可以通过指针间接访问内存。 内存编号是从 0 开始记录的,一般用十六进制数字表示。可以利用指…...
新规之下产业园区如何合理收费水电费用
一、政策背景 2018年3月30日,国家发改委发布《国家发展改革委关于降低一般工商业电价有关事项的通知》。明确提出进一步规范和降低电网环节收费,一是提高两部制电价的灵活性;二是全面清理规范电网企业在输配电价之外的收费项目,重…...
1011. 在 D 天内送达包裹的能力
传送带上的包裹必须在 days 天内从一个港口运送到另一个港口。 传送带上的第 i 个包裹的重量为 weights[i]。每一天,我们都会按给出重量(weights)的顺序往传送带上装载包裹。我们装载的重量不会超过船的最大运载重量。 返回能在 days 天内将…...
基于SpringBoot养老院管理系统
目录 一、项目介绍 二. 运行环境 三、项目技术 四、部署项目 五、项目运行 六、项目展示 五、项目下载 一、项目介绍 基于springboot的养老院管理系统拥有多种角色账号:管理员和用户 管理员:管理员管理、用户管理、健康管理、病例方案管理、药品…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...
Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...
MySQL 主从同步异常处理
阅读原文:https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主,遇到的这个错误: Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一,通常表示ÿ…...
【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验
Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...
LLaMA-Factory 微调 Qwen2-VL 进行人脸情感识别(二)
在上一篇文章中,我们详细介绍了如何使用LLaMA-Factory框架对Qwen2-VL大模型进行微调,以实现人脸情感识别的功能。本篇文章将聚焦于微调完成后,如何调用这个模型进行人脸情感识别的具体代码实现,包括详细的步骤和注释。 模型调用步骤 环境准备:确保安装了必要的Python库。…...
