传送门

题意:

给你两个数a,b,每次可对两个数同时进行三种操作:加1,减1或者同时除以他们的公共质因数,问使得其中任意一个数到达1的最小操作 次数。

思路:

不妨设a>b,f(a,d)表示a,b-a这组数转化为1的最小次数,d为b-a的值,设k为b-a的质因数,那么f(a,b)是可以由状态f(a/k,b/k)和f(a/k+1,b/k)转化而来,于是,通过dfs的方式求解。

#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll pri[100100];
int vis[100100];
unordered_map<ll,ll>f;
ll change(ll a,ll b)
{return a*1e9+b;
}
int cnt;
void oula()
{for(int i = 2; i <= 100000; i++){if(!vis[i])pri[++cnt] = i;for(int j = 1; j <= cnt && pri[j]*i <= 100000; j++)vis[i*pri[j]] = 1;}
}
int dpri[100100];
int cot;
int dfs(ll a,ll d)
{// cout<<a<<" "<<d<<"\n";if(a == 1)return 0;else if(f[change(a,d)])return f[change(a,d)];if(d == 1)return a-1;ll now = a-1;for(int i = 1; i <= cot; i++){if(d%dpri[i] == 0)now = min(now,1+min(dfs(a/dpri[i]+1,d/dpri[i])+dpri[i]-a%dpri[i], dfs(a/dpri[i], d/dpri[i])+a%dpri[i]));}return f[change(a,d)]=now;
}
int main()
{oula();int t;cin>>t;while(t--){ll a,b;cin>>a>>b;cot = 0; if(a > b)swap(a,b);ll d = b-a;for(int i = 1; i <= cnt && pri[i] <= d; i++){if(d%pri[i] == 0)dpri[++cot] = pri[i];while(d%pri[i] == 0){d/=pri[i];}}if(d>1)dpri[++cot] = d;cout<<dfs(a,b-a)<<endl;}
}

J. Xingqiu‘s Joke相关推荐

  1. J. Xingqiu‘s Joke(2021ICPC-南京)(记忆化搜索 + 数论)

    The 2021 ICPC Asia Nanjing Regional Contest Problem 给出两个long long范围内的整数a和b(不相等),每次操作可以对a和b进行以下三个操作之一 ...

  2. 2022/9/28-2022/9/30 21南京C,H,J

    1633D - Make Them Equal dp 先求出1转化为每一个数需要的最小次数f[b[i]],问题就转化为容量为k,每件物品的体积为f[b[i]],价值为c[i],01背包,做这题的时候脑 ...

  3. 2021 ICPC 南京 3.27训练赛

    2021 ICPC 南京 D - Paimon Sorting J - Xingqiu's Joke I - Cloud Retainer's Game 题目链接 D - Paimon Sorting ...

  4. 2021acm-icpc区域赛(南京)补题笔记

    文章目录 前言 题目一览 A.Oops, It's Yesterday Twice More(签到) 题意 思路 M. Windblume Festival(签到) 题意 思路 C. Klee in ...

  5. 2021 46届icpc 南京

    文章目录 A. Oops, It's Yesterday Twice More C. Klee in Solitary Confinement D. Paimon Sorting H. Crystal ...

  6. 英语发音规则---J字母

    英语发音规则---J字母 一.总结 一句话总结: j只发[dʒ]音:jeep [dʒiːp] n. :jail [dʒeɪl] n. jeep [dʒiːp] n. 吉普车 jar [dʒɑː] n. ...

  7. java.lang.NullPointerException: Attempt to invoke virtual method ‘boolean java.lang.String.equals(j

    今天切正式环境出现的空指针 记录一下 下面是错误 java.lang.NullPointerException: Attempt to invoke virtual method 'boolean j ...

  8. 乌鲁木齐网络赛J题(最小费用最大流模板)

    ACM ICPC 乌鲁木齐网络赛 J. Our Journey of Dalian Ends 2017-09-09 17:24 243人阅读 评论(0) 收藏 举报  分类: 网络流(33)  版权声 ...

  9. html.textboxfor id,How to update the textbox value @Html.TextBoxFor(m = m.MvcGridModel.Rows[j].Id)

    问题 I have problem, that the text box value doesn't get updated with the new value in the model. @Htm ...

最新文章

  1. Technet:服务器虚拟化备份和灾难恢复
  2. 关于cocos2d-x 和安卓之间的相互调用
  3. JDK1.8 之Stream API总结
  4. Apache Lucene 5.0.0即将发布!
  5. java中三种常见内存溢出错误的处理方法(good)
  6. js的隐含参数(arguments,callee,caller)使用方法
  7. linux文件服务有哪些,linux有哪些文件系统?_网站服务器运行维护,linux
  8. JavaScript面向对象学习小结
  9. 最大规模开源中文语音数据集 — aidatatang_1505zh及其语音识别基准实验详解
  10. 图数据库 Titan 快速入门
  11. c语言bmp图片读取融合保存,BMP_READ_WRITE 完全用C语言实现BMP图像的读取和保存 - 下载 - 搜珍网...
  12. [总结] 上海看房体验有感
  13. 靠查看英语资料 , “一不小心”成了国内第一
  14. ubuntu中vim编辑模式退格键无法删除,方向键乱入ABCD解决方法
  15. 网站服务器带宽2m怎么样,云服务器带宽2m够用吗
  16. JSP基础 mcv规范 EL
  17. java的跨平台特性是指_如何理解JAVA的跨平台特性
  18. php逐个汉字遍历字符串
  19. 高中计算机考试ps,高中信息技术会考Photoshop操作题试题及分析
  20. gstreamer基础教程13-Playback speed

热门文章

  1. 关于win8删除启动项后,不能正常启动(Status 0xc0000098)的解决方案
  2. [SECCON CTF 2016 Quals] Chat 分析与思考
  3. 史上最纯净精简版win7系统封装过程,整个体积2.3G
  4. 你真的了解数据是如何存储的吗
  5. Linux系统最新的核心版本号是多少,linux系统核心版本号的具体涵义是什么
  6. 【Git之窗】(十)“远程仓库”版本回退解决方案
  7. 可持续微电网能源管理
  8. 微型计算机cpu每执行,微型计算机及接口技术2017年4月真题试题(04732)
  9. Mysql——ER模型
  10. 电子专业常用电子网站