51nod1693 水群
题目链接: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 水群的更多相关文章
- 51nod1693 水群 最短路
若A=K*B,若仅通过操作二:将B变换为A需要K步, 由算数基本定理可知:k=p1*p2*……pn(p为素数,且可能重复) 那么:将B转化为p1*B需要p1步,将p1*B转化为p1*p2*B需要p2步 ...
- 51nod 1693 水群
基准时间限制:0.4 秒 空间限制:524288 KB 分值: 160 难度:6级算法题 收藏 关注 总所周知,水群是一件很浪费时间的事,但是其实在水群这件事中,也可以找到一些有意思的东西. 比如 ...
- 51 nod 1693 水群
1693 水群 基准时间限制:0.4 秒 空间限制:524288 KB 分值: 160 难度:6级算法题 收藏 关注 总所周知,水群是一件很浪费时间的事,但是其实在水群这件事中,也可以找到一些有 ...
- 51nod 1693 水群(神奇的最短路!)
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1693 题意: 思路: 这个思路真是神了.. 对于每个点$i$,它需要和$ ...
- 【07】QQ群管理公告小结:
[07]QQ群管理公告小结: 01,请看公告遵守相关规定. 02,群内除QQ自带的缺省表情外(不是QQ的VIP或大图表情),禁止发送大表情,大图片(展示问题的屏幕截图除外), 03,修改群名片 ...
- CTSC2016&&APIO2016滚粗记&&酱油记&&游记<del>(持续更新)</del>
挖一波坑 #include <cstdio> using namespace std; int main(){ puts("转载请注明出处:http://www.cnblogs. ...
- SHOI2016游记&滚粗记&酱油记
Day0 学校刚期中考完,全科血崩,感觉这次真要考不到一本线了tat 晚上写了个可持久化trie的题,也懒得敲板子(上个礼拜都敲过了),就碎叫了 Day1 上午起床吃饭水群看球,吃完中饭就去考场了. ...
- 前端进阶试题css(来自js高级前端开发---豪情)既然被发现了HOHO,那我就置顶了嘿嘿!觉得自己技术OK的可以把这套题目做完哦,然后加入高级前端的社区咯
http://www.cnblogs.com/jikey/p/4426105.html js高级前端开发加群方法(此群很难进,里面纯技术,严禁广告,水群) 完整题目做完发邮箱(jikeytang@16 ...
- msp
10月8号加入了微软的msp项目,其实那时候对msp没有什么概念,不知道要干嘛,真的觉得大不了就退出呗,反正也没啥大事, 现在再也不那么看了,这二十多天虽然没怎么水群,但是还是一直在关注着我们这个 ...
随机推荐
- js match() 方法
方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配.
- s3c2440 test 里面的一些用法
#define REQ_INFO 0x60U U代表无符号,unsignchar
- ExtJs Grid 删除,编辑,查看详细等超链接处理
在网上查了好多资料,关于ExtJs处理操作栏的“删除”.“编辑”.“查看详细”的处理,原来项目都是这么处理: 操作栏:{ text:'操作', xtype:'actioncolumn', items ...
- Excel 统计在某个区间内数值的个数
=COUNTIF(A1:A50,"<=1.0E-5")-COUNTIF(A1:A50,"<60")
- PowerDesigner反向工程,根据Oracle数据库结构生成ER图(2014-3-25记)
01.添加数据服务端 02. PowerDesigner 1. 新建PDM:选择菜单File->New Model,[Model type]选择Physical Data Model,[DBMS ...
- nginx 设置 fastcgi缓存
#增加调试信息 add_header X-Cache-CFC "$upstream_cache_status - $upstream_response_time"; fastcgi ...
- 原生JS--COOKIE
原生JS--COOKIE: COOKIE基础及应用:1.什么是COOKIE==>页面用来保存信息,比如:自动登录,记住用户名2.COOKIE的特性: --同一个网站中,所有的页面共享同一套co ...
- 禁止输入中文 与 禁止输入数字在phonegap api环境效果
例子如下: <!doctype html> <html> <head> <meta charset="utf-8"> <tit ...
- python 学习笔记八 进程和线程 (进阶篇)
什么是线程(thread)? 线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执 ...
- 【转】稍改进过的ListView,很好用哈
using System; using System.Collections.Generic; using System.Text; using System.Windows.Forms; using ...