当前位置: 首页 > news >正文

蓝桥杯每日一题2023.10.1

 路径 - 蓝桥云课 (lanqiao.cn)

题目分析 

求最短路问题,有多种解法,下面介绍两种蓝桥杯最常用到的两种解法

方法一

Floyd(求任意两点之间的最短路)注:不能有负权回路

初始化每个点到每个点的距离都为0x3f这样才能对比求出最短路

由题意先将ab差的绝对值小于等于21的边的边权赋予,还有自己到自己的边为0

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 3000;
int ans = 0x3f;
int d[N][N];
int gcd(int a, int b)
{return b == 0 ? a : gcd(b, a % b);
}
int lcm(int a, int b)
{return a * b / gcd(a, b);
}
int main()
{	memset(d, 0x3f, sizeof d);for(int i = 1; i <= 2021; i ++){for(int j = 1; j <= 2021; j ++){if(abs(i - j) <= 21){d[i][j] = min(d[i][j], lcm(i, j));}}}for(int i = 1; i <= 2021; i ++)d[i][i] = 0;for(int k = 1; k <= 2021; k ++){for(int i = 1; i <= 2021; i ++){for(int j = 1; j <= 2021; j ++){d[i][j] = min(d[i][j], d[i][k] + d[k][j]);}}}cout << d[1][2021];return 0;
}

答案:10266837

方法二

Dijkstra(任意一点到所有点的最短路)

第一步:初始化距离 dist[1] = 0, dist[i] = +∞

第二步:找到当前没有确定点的最小值,找到最小的点之后用这个点去更新它到所有点的距离

 

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> PII;
const int N = 2e5 + 10;
int e[N], ne[N], w[N], h[N], idx, d[N];
bool st[N]; 
int gcd(int a, int b)
{return b == 0 ? a : gcd(b, a % b);
}
int lcm(int a, int b)
{return a * b / gcd(a, b);
}
void add(int a, int b, int c)
{e[idx] = b, w[idx] = c, ne[idx] = h[a], h[a] = idx ++;
}
int dijkstra()
{memset(d, 0x3f, sizeof d);d[1] = 0;priority_queue<PII, vector<PII>, greater<PII>> q;q.push({0, 1});while(q.size()){auto t = q.top();q.pop();int num = t.second, dis = t.first;if(st[num])continue;st[num] = true;for(int i = h[num]; i != -1; i = ne[i]){int j = e[i];if(d[j] > dis + w[i]){d[j] = dis + w[i];q.push({d[j], j});}}}//if(d[2021] == 0x3f3f3f3f)return -1;return d[2021];
} 
int main()
{	memset(h, -1, sizeof h);for(int i = 1; i <= 2021; i ++){for(int j = 1; j <= 2021; j ++){if(abs(i - j) <= 21){add(i, j, lcm(i, j));}}}cout << dijkstra();return 0;
}
http://www.lryc.cn/news/181531.html

相关文章:

  • 第三章:最新版零基础学习 PYTHON 教程(第十节 - Python 运算符—Python 中的运算符重载)
  • Nacos 实现服务平滑上下线(Ribbon 和 LB)
  • c/c++里 对 共用体 union 的内存分配
  • 博途SCL区间搜索指令(判断某个数属于某个区间)
  • (三)激光线扫描-中心线提取
  • 递归与分治算法(1)--经典递归、分治问题
  • Java之SpringCloud Alibaba【六】【Alibaba微服务分布式事务组件—Seata】
  • Android逆向学习(五)app进行动态调试
  • 音频编辑软件Steinberg SpectraLayers Pro mac中文软件介绍
  • 基于.Net Core实现自定义皮肤WidForm窗口
  • 【Rust】操作日期与时间
  • blender快捷键
  • java Spring Boot 自动启动热部署 (别再改点东西就要重启啦)
  • TouchGFX之后端通信
  • cesium gltf控制
  • Spring的依赖注入(DI)以及优缺点
  • 【强化学习】05 —— 基于无模型的强化学习(Prediction)
  • 【计算机组成原理】考研真题攻克与重点知识点剖析 - 第 1 篇:计算机系统概述
  • 【Java-LangChain:面向开发者的提示工程-8】聊天机器人
  • 利用t.ppft.interval分别计算T分布置信区间[实例]
  • 软件工程第三周
  • 动态链接那些事
  • 力扣:118. 杨辉三角(Python3)
  • QGIS文章二——DEM高程裁剪和3D地形图
  • 【kubernetes】kubernetes中的StatefulSet使用
  • 创建文件夹
  • 点击router-link时候会发生什么?
  • 【Spring】@Bean方法中存在继承如何分析
  • 【Vim 插件管理器】Vim-plug和Vim-vbundle的区别
  • 电子计算机核心发展(继电器-真空管-晶体管)