#include<bits/stdc++.h>
using namespace std;
int a[2022][2022];
int main()
{
int i,j,k;
for(i=1;i<=2021;i++)
{
for(j=1+i;j<=2021&&j<=i+21;j++)
{
a[i][j]=a[j][i]=i*j/(__gcd(i,j));
//else
//a[i][j]=a[i][j]=min(a[i][j],i*j/(__gcd(i,j)));
}
}
int d[2025],vis[2025];
memset(d,99999999,sizeof(d));
d[1]=0;
memset(vis,0,sizeof(vis));
for(i=1;i<2022;i++)
{
int x=0;
for(j=1;j<2022;j++)
if(!vis[j]&&d[j]<d[x])
x=j;
vis[x]=1;
for(j=max(1,x-21);j<=min(2021,x+21);j++)
d[j]=min(d[j],d[x]+a[x][j]);
}
cout<<d[2021]<<endl;
return 0;
}
2021蓝桥杯省赛B组第一场E-:路径
最新推荐文章于 2022-04-06 10:19:36 发布