题意及思路:https://blog.csdn.net/bossup/article/details/37076965

代码:

#include <bits/stdc++.h>
#define LL long long
#define INF 1e18
using namespace std;
int lcm(int x, int y) {
return x * y / __gcd(x, y);
}
const int maxn = 500010;
LL a, b, k;
LL dp[maxn];
unordered_map<LL, bool> v;
queue<pair<LL, LL> > q;
LL bfs(LL x, LL y) {
q.push(make_pair(x, 0));
while(!q.empty()) {
pair<LL, LL> tmp = q.front();
q.pop();
if(v[tmp.first]) continue;
v[tmp.first] = true;
if(tmp.first == y) return tmp.second;
for (int i = 2; i <= k; i++) {
if(tmp.first % i != 0) {
q.push(make_pair(tmp.first - tmp.first % i, tmp.second + 1));
}
}
q.push(make_pair(tmp.first - 1, tmp.second + 1));
}
}
LL dfs(LL x) {
if(dp[x] != -1) return dp[x];
LL tmp = INF;
for (int i = 2; i <= k; i++) {
if(x % i != 0)
tmp = min(tmp, dfs(x - x % i));
}
tmp = min(tmp, dfs(x - 1));
return dp[x] = tmp + 1;
}
int main() {
int LCM = 1;
scanf("%lld%lld%d", &a, &b, &k);
for (int i = 2; i <= k; i++) {
LCM = lcm(LCM, i);
}
memset(dp, -1, sizeof(dp));
dp[0] = 0;
for (int i = 1; i < LCM; i++) {
dfs(i);
}
LL ans = 0;
if(a - a % LCM >= b) {
ans += dp[a % LCM];
a -= a % LCM;
}
LL del = a - b;
LL tmp = del / LCM;
a -= tmp * LCM;
ans += tmp * (dp[LCM - 1] + 1);
if(a > b) {
LL tmp = bfs(a, b);
ans += tmp;
}
printf("%lld\n", ans);
}

  

Codeforces 251C Number Transformation DP, 记忆化搜索,LCM,广搜的更多相关文章

  1. 【bzoj5123】[Lydsy12月赛]线段树的匹配 树形dp+记忆化搜索

    题目描述 求一棵 $[1,n]$ 的线段树的最大匹配数目与方案数. $n\le 10^{18}$ 题解 树形dp+记忆化搜索 设 $f[l][r]$ 表示根节点为 $[l,r]$ 的线段树,匹配选择根 ...

  2. 【BZOJ】1415 [Noi2005]聪聪和可可 期望DP+记忆化搜索

    [题意]给定无向图,聪聪和可可各自位于一点,可可每单位时间随机向周围走一步或停留,聪聪每单位时间追两步(先走),问追到可可的期望时间.n<=1000. [算法]期望DP+记忆化搜索 [题解]首先 ...

  3. [题解](树形dp/记忆化搜索)luogu_P1040_加分二叉树

    树形dp/记忆化搜索 首先可以看出树形dp,因为第一个问题并不需要知道子树的样子, 然而第二个输出前序遍历,必须知道每个子树的根节点,需要在树形dp过程中记录,递归输出 那么如何求最大加分树——根据中 ...

  4. poj1664 dp记忆化搜索

    http://poj.org/problem?id=1664 Description 把M个相同的苹果放在N个相同的盘子里,同意有的盘子空着不放,问共同拥有多少种不同的分法?(用K表示)5.1.1和1 ...

  5. 状压DP+记忆化搜索 UVA 1252 Twenty Questions

    题目传送门 /* 题意:给出一系列的01字符串,问最少要问几个问题(列)能把它们区分出来 状态DP+记忆化搜索:dp[s1][s2]表示问题集合为s1.答案对错集合为s2时,还要问几次才能区分出来 若 ...

  6. ACM International Collegiate Programming Contest, Tishreen Collegiate Programming Contest (2017)- K. Poor Ramzi -dp+记忆化搜索

    ACM International Collegiate Programming Contest, Tishreen Collegiate Programming Contest (2017)- K. ...

  7. POJ 1088 DP=记忆化搜索

    话说DP=记忆化搜索这句话真不是虚的. 面对这道题目,题意很简单,但是DP的时候,方向分为四个,这个时候用递推就好难写了,你很难得到当前状态的前一个真实状态,这个时候记忆化搜索就派上用场啦! 通过对四 ...

  8. CodeForces 398B 概率DP 记忆化搜索

    题目:http://codeforces.com/contest/398/problem/B 有点似曾相识的感觉,记忆中上次那个跟这个相似的 我是用了 暴力搜索过掉的,今天这个肯定不行了,dp方程想了 ...

  9. Codeforces 148D Bag of mice:概率dp 记忆化搜索

    题目链接:http://codeforces.com/problemset/problem/148/D 题意: 一个袋子中有w只白老鼠,b只黑老鼠. 公主和龙轮流从袋子里随机抓一只老鼠出来,不放回,公 ...

随机推荐

  1. K8S操作

    一.K8Spods操作 kubectl delete all --all //删除 所有pods

  2. 转载:jQuery的deferred对象详解

    一.什么是deferred对象? 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作.其中,既有异步的操作(比如ajax读取服务器数据),也有同步的操作(比如遍历一个大型数组),它们 ...

  3. Centos yum的源 设置为阿里云源

    在 阿里巴巴镜像站页面,在centos 操作的帮助,有介绍 wget和curl 2种方式来下载CentOS-Base.repo 备份 mv /etc/yum.repos.d/CentOS-Base.r ...

  4. @ResponseEntity返回值(怪异)

    定制相应头 /** * 将返回数据放在响应体中 * * ResponseEntity<String>:响应体中内容的类型 * @return */ //@ResponseBody @Req ...

  5. vue+cesiumjs环境搭建【import引入】

    之前写了一遍博客关于vue+cesium的搭建,后面是在index.html里通过script引入的,但是后面要用到指南针的时候发现指南针没法引入了 之前的链接:  https://www.cnblo ...

  6. Delphi 字符串函数SysUtils单元 AnsiSameStr、AnsiSameText、AnsiCompareStr、AnsiCompareText、AnsiCompareFileName、AnsiUpperCase、AnsiLowerCase、AnsiUpperCaseFileName、AnsiLowerCaseFileName、AnsiPos、AnsiQuotedStr

    USES 单元 SysUtils 非 StrUtils AnsiSameStr.AnsiSameText.AnsiCompareStr.AnsiCompareText.AnsiCompareFileN ...

  7. Xcode 编辑器之关于Other Linker Flags相关问题

    一,概述 问题场景一 当从网上去下载一些之前的完整的项目的时候,用终端也 pod update了,但一运行,熟悉的linker错误就出来了. 解决办法 在Other Linker Flags(也即 O ...

  8. OC学习篇之---Foundation框架中的NSDirctionary类以及NSMutableDirctionary类

    昨天学习了Foundation框架中NSArray类和NSMutableArray类:http://blog.csdn.net/jiangwei0910410003/article/details/4 ...

  9. BZOJ 3531: [Sdoi2014]旅行(树链剖分+线段树)

    传送门 解题思路 以每个颜色为根开一棵权值线段树,下标就是\(dfs\)序,其余都是基本操作,要动态开点. 代码 #include<iostream> #include<cstdio ...

  10. php自带函数大全

    php自带函数大全 http://blog.csdn.net/hopewtc/article/details/6797326   Abs: 取得绝对值.Acos: 取得反余弦值.ada_afetch: ...