51nod1693 水群 最短路
若A=K*B,若仅通过操作二:将B变换为A需要K步,
由算数基本定理可知:k=p1*p2*……pn(p为素数,且可能重复)
那么:将B转化为p1*B需要p1步,将p1*B转化为p1*p2*B需要p2步,以此类推,将B转化为A需要(p1+p2+....pn)步
因为(p1*p2*p3...*pn) < (p1+p2+p3+...pn),故而若仅通过操作二将B转化为A至少需要(p1+p2+p3...+pn)步
因存在删除操作,我们将问题转化为图论:点i和点k*i之间存在单向边,点i和点i-1之间存在单项边。起始点为1,终点为n,求1到n的最短路。
我们知道:若仅通过操作二将1转化为较大的素数A,需要A步。但若通过操作三,我们可以先将1转化为(A+m),再通过(A+m)-A步操作,得到A。
例如:A=17,18=2*3*3,将1转化为18需要8步,再将18转化为17需要1步,共需要9步,远小于17。
因而我们可推断:较大的素数,可以通过操作三由较小的素数推出。
实际上,我们需要的素数仅为(2,3,5,7)
接下来,通过最短路算法,求解
#include<stdio.h>
#include<math.h>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#define MAXSIZE 1000005
#define INF 999999999
#define LL long long
using namespace std; int dist[MAXSIZE],p[]={,,,}; void spfa()
{
queue<int> Q;
Q.push();
for(int i=;i<MAXSIZE;i++)
dist[i] = INF;
dist[] = ;
while(!Q.empty())
{
int now = Q.front();
Q.pop();
for(int i=;i<;i++)
{
if(p[i]*now<MAXSIZE && dist[now*p[i]]>dist[now]+p[i])
{
dist[now*p[i]] = dist[now]+p[i];
Q.push(now*p[i]);
} if(now> && dist[now-]>dist[now]+)
{
dist[now-] = dist[now]+;
Q.push(now-);
}
}
}
} int main()
{
int n;
scanf("%d",&n);
spfa();
int ans = dist[n];
printf("%d\n",ans);
return ;
}
51nod1693 水群 最短路的更多相关文章
- 51nod1693 水群
题目链接:51nod1693 水群 题解参考大神的博客:http://www.cnblogs.com/fighting-to-the-end/p/5874763.html 这题时限0.4秒,真的够狠的 ...
- 51 nod 1693 水群
1693 水群 基准时间限制:0.4 秒 空间限制:524288 KB 分值: 160 难度:6级算法题 收藏 关注 总所周知,水群是一件很浪费时间的事,但是其实在水群这件事中,也可以找到一些有 ...
- 51nod 1693 水群
基准时间限制:0.4 秒 空间限制:524288 KB 分值: 160 难度:6级算法题 收藏 关注 总所周知,水群是一件很浪费时间的事,但是其实在水群这件事中,也可以找到一些有意思的东西. 比如 ...
- 51nod 1693 水群(神奇的最短路!)
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1693 题意: 思路: 这个思路真是神了.. 对于每个点$i$,它需要和$ ...
- 胡小兔的OI日志3 完结版
胡小兔的 OI 日志 3 (2017.9.1 ~ 2017.10.11) 标签: 日记 查看最新 2017-09-02 51nod 1378 夹克老爷的愤怒 | 树形DP 夹克老爷逢三抽一之后,由于采 ...
- hdu3665 水最短路
题意 : 从起点0开始,到达最近的那个是海边的城镇的距离.. 思路: 水的最短路,随你怎么写,dij,floyd,spfa..都行,只要你喜欢..我写的spfa好久不写了,复 ...
- luoguP4366 [Code+#4]最短路 最短路
好久没写过博客了.... 本题还是挺有趣的(很水的最短路) 关键在于怎么优化这$n^2$条连边 通常,我们希望用一些边来替代一条边从而减小边集 那么,注意到异或操作可以拆分成按位运算,因此我们只需考虑 ...
- 【07】QQ群管理公告小结:
[07]QQ群管理公告小结: 01,请看公告遵守相关规定. 02,群内除QQ自带的缺省表情外(不是QQ的VIP或大图表情),禁止发送大表情,大图片(展示问题的屏幕截图除外), 03,修改群名片 ...
- JSOI 2017 Round 1滚粗记
day0 到常州一中报道,吃了午饭,好像这次有小火锅. 然后下午听JYY讲线性规划...好神啊. 晚上去试机,机子上没有npp,只有linux下的codeblocks,敲起来一顿一顿的...后来被迫使 ...
随机推荐
- 计算机基础:计算机网络-socket编程
来源:mooc大学华南理工大学计算机网络课程 chapter6 代码:https://github.com/NeilKeats/SocketDemo/commit/5f3a795250a9533910 ...
- BeautifulSoup获取图片
参看文档:https://www.cnblogs.com/forever-snow/p/8506746.html
- vue(基础二)_组件,过滤器,具名插槽
一.前言 主要包括: 1.组件(全局组件和局部组件) 2.父组件和子组件之间的通信(单层) 3.插槽和具名插槽 ...
- SQL Server索引的作用
一.深入浅出理解索引结构 实际上,您可以把索引理解为一种特殊的目录.微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引.簇集索引)和非聚集索引(noncl ...
- 【知名的3D造型设计软件】犀牛 Rhinoceros 5.5.2 for Mac
[简介] 今天和大家分享最新的3D设计软件 犀牛 Rhinoceros for Mac 5.5.2 版本,支持中文界面,这是一款Mac上知名的3D造型软件,犀牛可以广泛地应用于三维动画制作.工业制造. ...
- ServerU FTP服务器无法上传中文名文件怎么办
erverU是一款非常流行的FTP服务器.最新版本的默认是utf-8编码,对中文支持不够友好,容易发生无法上传本地文件名称包含中文的文件. 工具/原料 server-u 方法/步骤 进入S ...
- 简洁架构的思想,基于go实现
https://manuel.kiessling.net/2012/09/28/applying-the-clean-architecture-to-go-applications/ 从 Clean- ...
- go etcd
etcd介绍 GitHub:https://github.com/coreos/etcd 官网:https://coreos.com/etcd/ 下载:https://github.com/coreo ...
- C++ cout格式化输出(转)
C++ cout格式化输出(转) 这篇文章主要讲解如何在C++中使用cout进行高级的格式化输出操作,包括数字的各种计数法(精度)输出,左或右对齐,大小写等等.通过本文,您可以完全脱离scanf/pr ...
- ranger部署文档(记)
目录 概览... 2 1. ranger-admin. 2 2. ranger-user-sync. 2 3. ranger-*-plugins. 2 安装... 3 1 ...