当前位置:   article > 正文

第十二届蓝桥杯省赛C&C++ 研究生组-路径

第十二届蓝桥杯省赛C&C++ 研究生组-路径

在这里插入图片描述
记录到每个结点的最短距离,以此为基础计算后续结点最优值

#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;

ll gcd(int a, int b){
	if(!b) return a;
	return gcd(b, a % b);
}

int main(){
	ll dp[2022] = {0};//dp[i]记录从1到i的最短路径 
	for(int i = 1; i <= 2021; i++){//从结点i出发 
		for(int j = i + 1; j <= i + 21; j++){//更新可到到路径中的最短距离 
			if(j > 2021) break;//已经找到了到2021的最短距离,完美收官 
			if(!dp[j]) dp[j] = dp[i] + i * j / gcd(i, j);
			else dp[j] = min(dp[j], dp[i] + i * j / gcd(i, j));
		}
	}
	printf("%lld", dp[2021]); 
	return 0;
} 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/286030?site
推荐阅读
相关标签
  

闽ICP备14008679号