J. Xingqiu‘s Joke
传送门
题意:
给你两个数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相关推荐
- J. Xingqiu‘s Joke(2021ICPC-南京)(记忆化搜索 + 数论)
The 2021 ICPC Asia Nanjing Regional Contest Problem 给出两个long long范围内的整数a和b(不相等),每次操作可以对a和b进行以下三个操作之一 ...
- 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背包,做这题的时候脑 ...
- 2021 ICPC 南京 3.27训练赛
2021 ICPC 南京 D - Paimon Sorting J - Xingqiu's Joke I - Cloud Retainer's Game 题目链接 D - Paimon Sorting ...
- 2021acm-icpc区域赛(南京)补题笔记
文章目录 前言 题目一览 A.Oops, It's Yesterday Twice More(签到) 题意 思路 M. Windblume Festival(签到) 题意 思路 C. Klee in ...
- 2021 46届icpc 南京
文章目录 A. Oops, It's Yesterday Twice More C. Klee in Solitary Confinement D. Paimon Sorting H. Crystal ...
- 英语发音规则---J字母
英语发音规则---J字母 一.总结 一句话总结: j只发[dʒ]音:jeep [dʒiːp] n. :jail [dʒeɪl] n. jeep [dʒiːp] n. 吉普车 jar [dʒɑː] n. ...
- java.lang.NullPointerException: Attempt to invoke virtual method ‘boolean java.lang.String.equals(j
今天切正式环境出现的空指针 记录一下 下面是错误 java.lang.NullPointerException: Attempt to invoke virtual method 'boolean j ...
- 乌鲁木齐网络赛J题(最小费用最大流模板)
ACM ICPC 乌鲁木齐网络赛 J. Our Journey of Dalian Ends 2017-09-09 17:24 243人阅读 评论(0) 收藏 举报 分类: 网络流(33) 版权声 ...
- 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 ...
最新文章
- Technet:服务器虚拟化备份和灾难恢复
- 关于cocos2d-x 和安卓之间的相互调用
- JDK1.8 之Stream API总结
- Apache Lucene 5.0.0即将发布!
- java中三种常见内存溢出错误的处理方法(good)
- js的隐含参数(arguments,callee,caller)使用方法
- linux文件服务有哪些,linux有哪些文件系统?_网站服务器运行维护,linux
- JavaScript面向对象学习小结
- 最大规模开源中文语音数据集 — aidatatang_1505zh及其语音识别基准实验详解
- 图数据库 Titan 快速入门
- c语言bmp图片读取融合保存,BMP_READ_WRITE 完全用C语言实现BMP图像的读取和保存 - 下载 - 搜珍网...
- [总结] 上海看房体验有感
- 靠查看英语资料 , “一不小心”成了国内第一
- ubuntu中vim编辑模式退格键无法删除,方向键乱入ABCD解决方法
- 网站服务器带宽2m怎么样,云服务器带宽2m够用吗
- JSP基础 mcv规范 EL
- java的跨平台特性是指_如何理解JAVA的跨平台特性
- php逐个汉字遍历字符串
- 高中计算机考试ps,高中信息技术会考Photoshop操作题试题及分析
- gstreamer基础教程13-Playback speed
热门文章
- 关于win8删除启动项后,不能正常启动(Status 0xc0000098)的解决方案
- [SECCON CTF 2016 Quals] Chat 分析与思考
- 史上最纯净精简版win7系统封装过程,整个体积2.3G
- 你真的了解数据是如何存储的吗
- Linux系统最新的核心版本号是多少,linux系统核心版本号的具体涵义是什么
- 【Git之窗】(十)“远程仓库”版本回退解决方案
- 可持续微电网能源管理
- 微型计算机cpu每执行,微型计算机及接口技术2017年4月真题试题(04732)
- Mysql——ER模型
- 电子专业常用电子网站