题目链接: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. 执行robot framework 的测试用例 命令行pybot使用方式

    1.执行整个项目下的所有用例: pybot 项目路径.例如: pybot D:\robot 2.执行某个suit中的所有用例: pybot 项目路径\suit文件名称. 例如:pybot D:\rob ...

  2. ajax是什么

    1.ajax是什么? ajax: asynchronous javascript and xml: 异步的javascript和xml. ajax是一种用来改善用户体验的技术,其本质是利用浏览器内置的 ...

  3. POJ - 3652 Persistent Bits

    “模拟”类型,题型容易,使用bitset库对二进制逐位操作,初始化.十进制转二进制(unsigned int).位操作. POJ - 3652 Persistent Bits Time Limit:  ...

  4. dpkg用法详解

    dpkg是一个Debian的一个命令行工具,它可以用来安装.删除.构建和管理Debian的软件包. 下面是它的一些命令解释: 1)安装软件 命令行:dpkg -i <.deb file name ...

  5. 五、Standard Controllers

    1.standardController:标准的controller 是同页面的standard Object的界面button的功能和逻辑是一样的<apex:page standardCont ...

  6. [课程设计]Scrum 1. 8多鱼点餐系统开发进度(完善整个订餐页面工作)

    [课程设计]Scrum 1. 8多鱼点餐系统开发进度(完善整个订餐页面工作) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题: ...

  7. Uva 11324 最大团

    题目链接:http://vjudge.net/contest/141990#problem/B 题意: 给一张有向图G,求一个结点集数最大的结点集,是的该结点集中任意两个结点 u 和 v,满足: 要么 ...

  8. 2016 ACM/ICPC Asia Regional Dalian Online

    1009 Sparse Graph(hdu5876) 由于每条边的权值都为1,所以最短路bfs就够了,只是要求转置图的最短路,所以得用两个set来维护,一个用来存储上次扩散还没访问的点,一个用来存储这 ...

  9. Auty自动化测试框架第五篇——框架内部的调用支持、自动化安装库与配置说明

    [本文出自天外归云的博客园] 本次对Auty自动化测试框架做些收尾工作,由于在scripts文件夹中的脚本会需要调用其他包结构文件夹中的脚本,所以这里需要添加一下框架对于内部脚本间互相调用的支持,这里 ...

  10. kibana安装与基础用法

    来自官网,版本为4.5 下载rpm包并安装 wget -c https://download.elastic.co/kibana/kibana/kibana-4.5.4-1.x86_64.rpm rp ...