51nod1693
题解:
首先将问题转化,可以发现操作改为两种
一种是s*=k,代价为k,一种是s--,代价为1
转化成图论,spfa跑最短路
然后更据一些证明,代价1的k<=13且为质数,并且不可能操作2连续5次
所以就可以优化
代码:
#include<bits/stdc++.h>
using namespace std;
const int N=,M=;
int n,a[N],b[M],f[N],in[N],dis[N];
int main()
{
scanf("%d",&n);
f[]=;
f[]=,f[]=,f[]=,f[]=,f[]=,f[]=;
int l=,r=;
memset(dis,0x3f,sizeof dis);
dis[]=;
b[]=;
while (l!=r)
{
int now=b[l++];
in[now]=;
l%=M;
if (now!=&&dis[now-]>dis[now]+)
{
dis[now-]=dis[now]+;
if (!in[now-])
{
b[r++]=now-;
in[now-]=;
r%=M;
}
}
for (int i=;f[i]*now<=n+&&i<=f[];i++)
{
int k=f[i]*now;
if (dis[k]>dis[now]+f[i])
{
dis[k]=dis[now]+f[i];
if (!in[k])
{
b[r++]=k;
in[k]=;
r%=M;
}
}
}
}
printf("%d",dis[n]);
}
51nod1693的更多相关文章
- 51nod1693 水群
题目链接:51nod1693 水群 题解参考大神的博客:http://www.cnblogs.com/fighting-to-the-end/p/5874763.html 这题时限0.4秒,真的够狠的 ...
- 51nod1693 水群 最短路
若A=K*B,若仅通过操作二:将B变换为A需要K步, 由算数基本定理可知:k=p1*p2*……pn(p为素数,且可能重复) 那么:将B转化为p1*B需要p1步,将p1*B转化为p1*p2*B需要p2步 ...
随机推荐
- Win32建立右键弹出菜单(PopMenu)
自定义右键菜单: #ifndef _CONTEXTMENU_H_ #define _CONTEXTMENU_H_ #include <windows.h> //动态菜单 #define I ...
- swift设计模式学习 - 策略模式
移动端访问不佳,请访问我的个人博客 设计模式学习的demo地址,欢迎大家学习交流 策略模式 策略模式定义了算法家族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化,不会影响到使用算法的客户. ...
- 51nod 1137 矩阵乘法
基本的矩阵乘法 中间for(int j=0;i<n;i++) //这里写错了 应该是j<n 晚上果然 效率不行 等会早点儿睡 //矩阵乘法 就是 两个矩阵 第一个矩阵的列 等与 第 ...
- ios苹果机系统的1px显示解决方案
1px边框在iPhone高清屏下,其实会变成2个物理像素的边框. /* 解决一像素问题 */ .navigation:before{ content: ""; pointer-ev ...
- The way to Go(6): Go程序的基本结构和要素
Reference: Github: Go Github: The way to Go Go程序的基本结构和要素 helloworld.go: package main import "fm ...
- NS3 MyApp Class Reference
官方文档:MyApp 可以在下面的几个例子找到: examples/tutorial/fifth.cc examples/tutorial/seventh.cc examples/tutorial/s ...
- HDU 5876 Sparse Graph(补图中求最短路)
http://acm.hdu.edu.cn/showproblem.php?pid=5876 题意: 在补图中求s到其余各个点的最短路. 思路:因为这道题目每条边的距离都是1,所以可以直接用bfs来做 ...
- Java I/O学习 标准的I/O重定向
public class Test{ /* * 标准的I/O重定向 * System.setIn(InputStream) * System.setOut(PrintStream) * System. ...
- python 斐波那契查找
def fibonacci_search(lis, key): # F = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987 ...
- java基础学习总结——线程(一)
一.线程的基本概念