## ZR#1012

blog咕咕咕了好久,开始补。

解法:

一个很显然的性质, $ x $ 只能转移到 $ x+1 $ 或者 $ 2x $ 处,所以我们可以以此性质建图,即 $ x $ 向 $ x + 1 $ 和 $ 2x $ 处连边,然后跑一遍SPFA就行了,建图过程详见代码。

CODE:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue> using namespace std; #define INF 2147483647
const int N = 1e6 + 100; int dis[N],x,n;
bool vis[N];
queue<int> q; inline void calc(int v,int u,int val) {
if(dis[v] > dis[u] + val) {
dis[v] = dis[u] + val;
if(!vis[v]) q.push(v),vis[v] = true;
}
}
inline void spfa() {
while(!q.empty()) {
int v = q.front();
q.pop();
if(v < n) calc(v + 1,v,1);
if(v > 0) {
calc(v - 1,v,1);
for(int i = 1 ; v * i <= n ; i++) {
if(v * (i + 1) > n) calc(n,v,2 * i + 4 + v * (i + 1) - n);
else calc(v * (i + 1),v,2 * i + 4);
}
}
vis[v] = false;
}
} int main() {
scanf("%d%d",&x,&n);
for(int i = 0 ; i <= n ; i++) dis[i] = INF;
if(x > n) {
dis[0] = 3,dis[n] = x - n;
vis[x] = vis[n] = vis[0] = true;
q.push(0);
q.push(n);
} else {
dis[x] = 0;
vis[x] = 1;
q.push(x);
}
spfa();
printf("%d\n",dis[n]);
//system("pause");
return 0;
}

最新文章

  1. [No0000A2]“原始印欧语”(PIE)听起来是什么样子?
  2. Java中的void
  3. 百度地图定位经纬度返回4.9E-324有关问题
  4. PHP try catch
  5. figure元素
  6. 批量删除.pyo后缀的文件
  7. 无向图的最短路径算法JAVA实现
  8. 【产品更新】EVC8013 硬件更新!
  9. stl map高效遍历删除的方法 [转]
  10. 让你的Git水平更上一层楼的10个小贴士
  11. 4.2、Libgdx每个模块概述
  12. MySQL 异常错误码使用 及 对照表
  13. 【转】Nginx反向代理和负载均衡
  14. python --- 二分查找算法
  15. python之造测试数据-faker(转载)
  16. Apache启动不成功时,用命令行检测(新手)
  17. [转] 语音识别基本原理介绍----gmm-hmm中的embedded training (嵌入式训练)
  18. esp8266(0) AT指令
  19. 现代程序设计 homework-01
  20. phpstrom破解

热门文章

  1. 有状态的bean和无状态的bean的区别
  2. 【kubernetes】通过rancher2部署k8s
  3. js --装饰者模式
  4. 实战FFmpeg--iOS平台使用FFmpeg将视频文件转换为YUV文件
  5. 尚硅谷韩顺平Linux教程学习笔记
  6. MySQL Replication--双主结构优缺点
  7. Spring Boot 笔记 (1) - Maven、基本配置、Profile的使用
  8. windows nginx
  9. PCM时序
  10. SUSE 12安装详解