基准时间限制:0.4 秒 空间限制:524288 KB 分值: 160 难度:6级算法题
 收藏
 关注
总所周知,水群是一件很浪费时间的事,但是其实在水群这件事中,也可以找到一些有意思的东西。

比如现在,bx2k就在研究怎样水表情的问题。
 
首先,bx2k在对话框中输入了一个表情,接下来,他可以进行三种操作。
第一种,是全选复制,把所有表情全选然后复制到剪贴板中。
第二种,是粘贴,把剪贴板中的表情粘贴到对话框中。
第三种,是退格,把对话框中的最后一个表情删去。
假设当前对话框中的表情数是num0,剪贴板中的表情数是num1,
那么第一种操作就是num1=num0
第二种操作就是num0+=num1
第三种操作就是num0--
现在bx2k想知道,如果要得到n(1<=n<=10^6)个表情,最少需要几次操作。
请你设计一个程序帮助bx2k水群吧。
Input
一个整数n表示需要得到的表情数
Output
一个整数ans表示最少需要的操作数
Input示例
233
Output示例
17

 
解法一
spfa
知道点电脑的都知道 一直复制相同的东西是无意义的 
所以我们把第一第二种操作看为一种 
而且我们还发现 某个点可以被多个点连接
多次连接耗时太多 
所以我们只需连到他的质数倍就可以了 
经研(ti)究(jie)发现 只有小于等于13的质数才对结果有影响
解法二
dp (来自myj Orz)
#include <cstring>
#include <cstdio>
#include <queue>
#define N 1000005 using namespace std;
bool notPrime[N],vis[N];
int Prime[N]={,,,,,,,},num,n,dis[N];
void spfa()
{
queue<int>q;
q.push();
memset(dis,0x3f,sizeof(dis));
vis[]=;
dis[]=;
for(int now;!q.empty();)
{
now=q.front();q.pop();
vis[now]=;
for(int i=;i<=;++i)
{
int v=now*Prime[i];
if(v>n+) break;
if(v<n+&&dis[v]>dis[now]+Prime[i])
{
dis[v]=dis[now]+Prime[i];
if(!vis[v])
{
vis[v]=;
q.push(v);
}
}
}
if(now>&&dis[now-]>dis[now]+)
{
dis[now-]=dis[now]+;
if(!vis[now-])
{
vis[now-]=;
q.push(now-);
}
}
}
}
void init()
{
notPrime[]=;
for(int i=;i<=N-;++i)
{
if(!notPrime[i]) Prime[++num]=i;
for(int j=;j<=num&&i*Prime[j]<=N-;++j)
{
notPrime[i*Prime[j]]=;
if(i%Prime[j]==) break;
}
}
}
int main()
{
scanf("%d",&n);
//init();
spfa();
printf("%d\n",dis[n]);
return ;
}
#include <iostream>
#include <cstring>
#include <cstdio> using namespace std;
int n,dp[],lit;
int main()
{
cin>>n;
memset(dp,/,sizeof(dp)),dp[]=;
for(int i=,v,base;i<=n+;++i)
{
base=dp[i];
for(v=;true;++v)
if(dp[i+v]+v<=base) base=dp[i+v]+v;
else break;
dp[i]=base,++base;
for(v=;i+v*i<=n+;++v)
dp[i+v*i]=min(dp[i+v*i],base+v);
}
cout<<dp[n];
return ;
}

dp (Orz myj)

51nod 1693 水群的更多相关文章

  1. 51nod 1693 水群(神奇的最短路!)

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1693 题意: 思路: 这个思路真是神了.. 对于每个点$i$,它需要和$ ...

  2. 51 nod 1693 水群

    1693 水群 基准时间限制:0.4 秒 空间限制:524288 KB 分值: 160  难度:6级算法题  收藏  关注 总所周知,水群是一件很浪费时间的事,但是其实在水群这件事中,也可以找到一些有 ...

  3. 51nod1693 水群

    题目链接:51nod1693 水群 题解参考大神的博客:http://www.cnblogs.com/fighting-to-the-end/p/5874763.html 这题时限0.4秒,真的够狠的 ...

  4. 51nod 博弈论水题

    51nod1069 Nim游戏 有N堆石子.A B两个人轮流拿,A先拿.每次只能从一堆中取若干个,可将一堆全取走,但不可不取,拿到最后1颗石子的人获胜.假设A B都非常聪明,拿石子的过程中不会出现失误 ...

  5. 51nod1693 水群 最短路

    若A=K*B,若仅通过操作二:将B变换为A需要K步, 由算数基本定理可知:k=p1*p2*……pn(p为素数,且可能重复) 那么:将B转化为p1*B需要p1步,将p1*B转化为p1*p2*B需要p2步 ...

  6. 胡小兔的OI日志3 完结版

    胡小兔的 OI 日志 3 (2017.9.1 ~ 2017.10.11) 标签: 日记 查看最新 2017-09-02 51nod 1378 夹克老爷的愤怒 | 树形DP 夹克老爷逢三抽一之后,由于采 ...

  7. NOIP模拟7

    期望得分:100+100+20=220 实际得分:100+95+20=215 T1 洛谷 P1306 斐波那契公约数 #include<cstdio> #include<cstrin ...

  8. 【07】QQ群管理公告小结:

    [07]QQ群管理公告小结:   01,请看公告遵守相关规定. 02,群内除QQ自带的缺省表情外(不是QQ的VIP或大图表情),禁止发送大表情,大图片(展示问题的屏幕截图除外),   03,修改群名片 ...

  9. CTSC2016&&APIO2016滚粗记&&酱油记&&游记<del>(持续更新)</del>

    挖一波坑 #include <cstdio> using namespace std; int main(){ puts("转载请注明出处:http://www.cnblogs. ...

随机推荐

  1. 利用oracle session context 向oracle传值

    有时候,我们在执行数据库请求时,需要向数据库传一些应用程序的上下文信息,比如当前应用的用户.举个场景,我们要通过触发器记录对某些关键表的修改日志,日志包括修改的表,字段,字段的值,修改的时间,当然非常 ...

  2. 如何在 Swoole 中优雅的实现 MySQL 连接池

    如何在 Swoole 中优雅的实现 MySQL 连接池 一.为什么需要连接池 ? 数据库连接池指的是程序和数据库之间保持一定数量的连接不断开, 并且各个请求的连接可以相互复用, 减少重复连接数据库带来 ...

  3. Spring Boot错误errMsg: "request:ok"

    在把评论写到数据库并且动态刷新评论区的时候,有时候正常写入,有时候就会有“request:ok”的的错误出现,错误信息如下: data: {timestamp: , error: "Inte ...

  4. SAP ECC6 IDES安装及虚拟机下载

    SAP ECC6.0 SR3 IDES Oracle.torrent(48.12G)下载 SAP ECC6 安装系列 SAP ECC6.0 IDES在Win7 X64上的安装 SAP ECC6.0 R ...

  5. CodeForces - 633D Fibonacci-ish 大数标记map+pair的使用

    Fibonacci-ish Yash has recently learnt about the Fibonacci sequence and is very excited about it. He ...

  6. [poj] Catch That Cow--bfs

    Description Farmer John has been informed of the location of a fugitive cow and wants to catch her i ...

  7. cogs1583. [POJ3237]树的维护

    1583. [POJ3237]树的维护 http://www.cogs.pro/cogs/problem/problem.php?pid=1583 ★★★☆   输入文件:maintaintree.i ...

  8. springCloud学习总览

      写完最后一篇特意去看了看第一篇是什么时候写的---2018/11/19,到现在三个月多一点,总的来说这三个月通过<Spring 微服务实战>这本书,算是对微服务进行了一次扫盲学习.   ...

  9. pytest框架(二)

    一.示例代码一 D:YOYO\ __init__.py test_class.py # content of test_class.py class TestClass: def test_one(s ...

  10. java基础第十一篇之Date、Math、自动装箱和拆箱

    Date类 表示一个瞬间,就是一个时刻 * * 构造方法: * public Date();//创建一个表示当前系统时间的Date对象 * public Date(long time);//毫秒值,距 ...