题目链接:51nod1693 水群

题解参考大神的博客:http://www.cnblogs.com/fighting-to-the-end/p/5874763.html

这题时限0.4秒,真的够狠的。。我用优化过的dij狂交一直TLE,最后还是死在四百多毫秒上,应该是姿势不对orz。后来看别人用spfa,然后一改就过了,这里我想收藏一下记忆化搜索的解法,真心服了。

 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = ;
const int inf = 0x3f3f3f3f;
int n;
int pri[] = {,,,,};
int s[N][];//1到i上一条边的状态是f的最小操作数
//j=0时,上一条边可以是i->i-1,否则是i->i*p
int dfs(int x, int f){
if(x == ) return ;
if(s[x][f]) return s[x][f];
s[x][f] = inf;
for(int i = ; i < ; i++)
if(!(x % pri[i]))
s[x][f] = min(s[x][f], dfs(x /pri[i], ) + pri[i]);
if(!f) return s[x][f];
s[x][] = s[x][];
for(int i = ; i < ; i++)
s[x][f] = min(s[x][f], dfs( x + i, ) + i);
return s[x][f];
}
int main(){
scanf("%d", &n);
printf("%d\n", dfs(n, ));
return ;
}

AC代码

再贴上我这份超时了的dij,我写的好差啊,只好说我刚刚入门最短路姿势还不够orz

 #include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<queue>
#define CLR(a,b) memset((a),(b),sizeof((a)))
using namespace std;
#define inf 0x3f3f3f3f
const int N = ;
int d[N], vis[N];
int prime[] = {, , , , };
int n;
struct qnode{
int v,c;
qnode(int _v=,int _c=):v(_v),c(_c){}
bool operator < (const qnode &r)const{
return r.c <c;
}
};
void dij(){
priority_queue<qnode>q;
for(int i = ; i <= n+; ++i){
d[i] = inf;
vis[i] = ;
}
d[]=;
q.push(qnode(, ));
while(!q.empty()){
qnode t=q.top(); q.pop();
int u=t.v;
if(vis[u])
continue;
vis[u]=;
for(int i = ; i< && u * prime[i] <= n+; ++i){
int v = u * prime[i];
int w = prime[i];
if(!vis[v] && d[u] + w < d[v]){
d[v] = d[u] + w;
q.push(qnode(v, d[v]));
}
}
int v = u - ;
int w = ;
if(!vis[v] && d[u] + w < d[v]){
d[v] = d[u] + w;
q.push(qnode(v, d[v]));
}
}
}
int main(){
scanf("%d", &n);
dij();
printf("%d\n", d[n]);
return ;
}

TLE代码

51nod1693 水群的更多相关文章

  1. 51nod1693 水群 最短路

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

  2. 51nod 1693 水群

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

  3. 51 nod 1693 水群

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

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

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

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

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

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

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

  7. SHOI2016游记&滚粗记&酱油记

    Day0 学校刚期中考完,全科血崩,感觉这次真要考不到一本线了tat 晚上写了个可持久化trie的题,也懒得敲板子(上个礼拜都敲过了),就碎叫了 Day1 上午起床吃饭水群看球,吃完中饭就去考场了. ...

  8. 前端进阶试题css(来自js高级前端开发---豪情)既然被发现了HOHO,那我就置顶了嘿嘿!觉得自己技术OK的可以把这套题目做完哦,然后加入高级前端的社区咯

    http://www.cnblogs.com/jikey/p/4426105.html js高级前端开发加群方法(此群很难进,里面纯技术,严禁广告,水群) 完整题目做完发邮箱(jikeytang@16 ...

  9. msp

    10月8号加入了微软的msp项目,其实那时候对msp没有什么概念,不知道要干嘛,真的觉得大不了就退出呗,反正也没啥大事,   现在再也不那么看了,这二十多天虽然没怎么水群,但是还是一直在关注着我们这个 ...

随机推荐

  1. js match() 方法

    方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配.

  2. s3c2440 test 里面的一些用法

    #define REQ_INFO 0x60U     U代表无符号,unsignchar

  3. ExtJs Grid 删除,编辑,查看详细等超链接处理

    在网上查了好多资料,关于ExtJs处理操作栏的“删除”.“编辑”.“查看详细”的处理,原来项目都是这么处理: 操作栏:{ text:'操作', xtype:'actioncolumn', items ...

  4. Excel 统计在某个区间内数值的个数

    =COUNTIF(A1:A50,"<=1.0E-5")-COUNTIF(A1:A50,"<60")

  5. PowerDesigner反向工程,根据Oracle数据库结构生成ER图(2014-3-25记)

    01.添加数据服务端 02. PowerDesigner 1. 新建PDM:选择菜单File->New Model,[Model type]选择Physical Data Model,[DBMS ...

  6. nginx 设置 fastcgi缓存

    #增加调试信息 add_header X-Cache-CFC "$upstream_cache_status - $upstream_response_time"; fastcgi ...

  7. 原生JS--COOKIE

    原生JS--COOKIE: COOKIE基础及应用:1.什么是COOKIE==>页面用来保存信息,比如:自动登录,记住用户名2.COOKIE的特性:  --同一个网站中,所有的页面共享同一套co ...

  8. 禁止输入中文 与 禁止输入数字在phonegap api环境效果

    例子如下: <!doctype html> <html> <head> <meta charset="utf-8"> <tit ...

  9. python 学习笔记八 进程和线程 (进阶篇)

    什么是线程(thread)? 线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执 ...

  10. 【转】稍改进过的ListView,很好用哈

    using System; using System.Collections.Generic; using System.Text; using System.Windows.Forms; using ...