我是靠谱客的博主 清脆服饰,最近开发中收集的这篇文章主要介绍十二届蓝桥杯(B组)c++----路径BackgroundDescriptionFormatLimitation,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Background

Description

小蓝学习了最短路径之后特别高兴,他定义了一个特别的图,希望找到图中的最短路径。小蓝的图由 2021 个结点组成,依次编号 1 至 2021。对于两个不同的结点 a,b,如果 a 和 b 的差的绝对值大于 21,则两个结点之间没有边相连;如果 a 和 b 的差的绝对值小于等于 21,则两个点之间有一条长度为 a 和 b 的最小公倍数的无向边相连。 例如:结点 1 和结点 23 之间没有边相连;结点 3和结点 24 之间有一条无向边,长度为 24;结点 15 和结点 25 之间有一条无向边,长度为 75。请计算,结点 1 和结点 2021 之间的最短路径长度是多少。

Format

Input

Output

输出最短路径长度

Limitation

1s, 1024KiB for each test case.

这是一道最短路径问题

反思总结:

这是一道填空题不在时间和空间上有限制,求出答案即可

看到最短路径,我们可以使用迪杰斯特拉(dijkstra)算法

1、建图(两个点的距离小于等于21,存在一条边且边权值为两个点的最小公倍数)

2、直接套用迪杰斯特拉(dijkstra)算法,注意迪杰斯特拉算法一般只对正权图好使,对特定的负权图好使(尽量不要对负权图使用)。

3、最小公倍数可以先使用辗转相除法求最大公约数,再通过( a * b )/最大公约数 求出最小公倍数。( a ,b 为两个顶点)

注意:

对于定义的最大值INF一定要够大不然答案会出错!!!

得出的答案可以将 INF 的值最后的 ans输出一下,如果两者的值一样,说明 INF 定义小了。

int 的最大范围是 0x3f3f3f3f (四个3f);

long long  的最大范围是  0x3f3f3f3f3f3f3f3f (八个3f);

#include <stdio.h>
#include <math.h>
#include <algorithm>
#include <iostream>
#include <string.h>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <vector>
using namespace std;
#define ll long long
const ll INF=0x3f3f3f3f;
ll n=1,m=2021;
ll a[2030][2030],vis[2030],dis[2030];
ll gcd(ll aa,ll b) {
return aa%b==0?b:gcd(b,aa%b);
}
void dj(ll s) {
for(ll i=1; i<=m; i++) {//初始化
dis[i]=INF;
vis[i]=0;
}
dis[s]=0;
for(ll i=1; i<=m; i++) {//遍历所有点
ll t=-1;
for(ll j=1; j<=m; j++) {//找边权最小的点
if(!vis[j]&&(t==-1||dis[j]<dis[t]))
t=j;
}
if(t==-1)//结束条件
return ;
vis[t]=1;
for(ll j=1; j<=m; j++) {//能否进行松弛操作
if(dis[j]>dis[t]+a[t][j])
dis[j]=dis[t]+a[t][j];
}
}
}
int main() {
memset(a,0x3f3f,sizeof(a));
for(ll i=1; i<=m; i++) {//建图
for(ll j=i; j<=m; j++) {
if(abs(i-j)<=21) {
ll temp=gcd(i,j);
a[i][j]=min(a[i][j],i/temp*j);
}
}
}
dj(1);
cout<<dis[2021]<<endl;
return 0;
}

最后

以上就是清脆服饰为你收集整理的十二届蓝桥杯(B组)c++----路径BackgroundDescriptionFormatLimitation的全部内容,希望文章能够帮你解决十二届蓝桥杯(B组)c++----路径BackgroundDescriptionFormatLimitation所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部