QwX (题目提供者)

首先简化题目,题面的意思就是,当前有一个数s
操作1是s*=k代价为k,操作2是s--代价为1
求把s从1变到n的最小代价

做法1:

直接暴力记忆化搜索,F(i)表示从1到i用的最小操作数
则F(i)=min(F(i+1),min{F(k)+n/k|n%k==0})
当然这样做肯定过不了
做法2:
考虑把问题转换成图论模型,对于每个i
连边i→i-1边权为1,连边i→i*k边权为k
那么题目就是要求点1到点n的最短路
但是很显然这样复杂度还是很高并不能过
做法3:
注意到如果一条边i→i*k能用若干条边代替
那么i→i*k这条边就是没有意义的
因为那些边的权值的乘积等于k
即那些边的权值和小于等于k
因此对于每个i,只用连i→i*p的边,其中p是质数
这样就可以让边数变得很小了
但是0.1s还是过不去
做法4:
既然过不去,就可以想一些别的办法
考虑在做法3中记录每一个点的最短路路径
就是打一个每个点自己最短路上的上一个点的表
那么可以从表中发现,i→i-1的边不会连续出现4次以上
而且i→i*p的边只有当p<=13的时候才有意义
于是又可以删掉很多边,边数大概是3*10^6条
但是这样做复杂度还是不够,用时稍微多于0.1s
做法5:
既然最短路的做法复杂度太高,就可以再换个思路。
重新考虑记忆化搜索的做法,F(i,j)表示从1到i上一条边的状态是j的最少操作数
j=0时上一条边可以是i→i-1的,否则就是i→i*p的边
那么F(i,0)=min(min{F(i+k,1)|0<k<5},min{F(i/p,0)|p<13})
于是这样做就可以把时间降到最低,从而做出此题
不忘初心 方得始终
PS:后来因为时限问题把时限改成了0.4s,所以做法3就A掉这个题
而且经过我自己的测试,做法5是可以在1s之内通过10^9的数据的
如果大家有兴趣可以试着打一下,毕竟也是一个很好的思路
我用了做法4。做法5看不懂。。。做法4一开始我加边部分点tle了,不加边就A了。
#include<cstdio>
#include<cstring>
#include<cctype>
#include<algorithm>
#include<queue>
using namespace std;
#define rep(i,s,t) for(int i=s;i<=t;i++)
#define dwn(i,s,t) for(int i=s;i>=t;i--)
#define clr(x,c) memset(x,c,sizeof(x))
#define qwq(x) for(edge *o=head[x];o;o=o->next)
const int nmax=2e6+5;
const int maxn=1e7+5;
const int inf=0x7f7f7f7f;
struct node{int x,dist;node(int x,int dist):x(x),dist(dist){};node(){};bool operator<(const node&rhs)const{return dist>rhs.dist;}
};
priority_queue<node>q;
int dist[nmax];
const int a[]={2,3,5,7,9,11,13};
int dij(int x){clr(dist,0x7f);dist[1]=0;q.push(node(1,0));node o;int tx,td,to;while(!q.empty()){o=q.top();q.pop();tx=o.x;td=o.dist;if(dist[tx]!=td) continue;rep(i,0,5){to=tx*a[i];if(to<x+10&&dist[to]>td+a[i]){dist[to]=td+a[i];q.push(node(to,td+a[i]));}}if(tx&&dist[tx-1]>dist[tx]+1){dist[tx-1]=dist[tx]+1;q.push(node(tx-1,dist[tx-1]));}}     return dist[x];
}
int main(){int n;scanf("%d",&n);printf("%d\n",dij(n));return 0;
}

  

1693 水群
基准时间限制: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

转载于:https://www.cnblogs.com/fighting-to-the-end/p/5874763.html

51nod1693 水群相关推荐

  1. C++和Rust_【Rust水群夜话】盘点Rust 官方团队2019年进展

    夫天地者,万物之逆旅也:光阴者,百代之过客也.而浮生若梦,为欢几何. 一年又过去了. 在Rust水群中,闲聊起Rust团队这一年的Roadmap进展,正好野喵君 @CrLF0710 常年驻守Rust官 ...

  2. 51nod 1693 水群

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

  3. 小姑娘说,我全靠水群,挤进了安全圈

    认识她,是在一年多以前,那时候,我刚开始写技术公众号,而她,在做运营. 前几天,她在朋友圈刷到我写的那篇文章<他说,我可能以后不干安全了>. 她问我,你想听我的故事吗? 我很荣幸成为了她的 ...

  4. 51nod 1693 水群(思维,最短路,spfa)

    1693 水群 总所周知,水群是一件很浪费时间的事,但是其实在水群这件事中,也可以找到一些有意思的东西. 比如现在,bx2k就在研究怎样水表情的问题. 首先,bx2k在对话框中输入了一个表情,接下来, ...

  5. 51nod 1693 水群 (spfa)

    Description 总所周知,水群是一件很浪费时间的事,但是其实在水群这件事中,也可以找到一些有意思的东西. 比如现在,bx2k就在研究怎样水表情的问题. 首先,bx2k在对话框中输入了一个表情� ...

  6. 1800: 少水群多刷题

     1800: 少水群多刷题 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 700  Solved: 321 SubmitStatusWeb Boa ...

  7. ZZULIOJ 1800: 少水群多刷题

    题目描述 输入 多实例,读取到文件尾结束. 每个实例输入一个正整数n 输出 对每个实例:输出n行"年轻人要少水群多刷题!"(不要输出引号) 每个实例后面输出一个空行. 样例输入 1 ...

  8. ZZULIOJ 1800 少水群多刷题

    1800: 少水群多刷题 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 686  Solved: 314 SubmitStatusWeb Board ...

  9. discord 自动水群脚本

    原理:从你加入的channel里获取到历史消息随机选择一条发送至目标channel 需要先登录网页版获取authorization # -*- coding: utf-8 -*- "&quo ...

最新文章

  1. 多重背包 (poj 1014)
  2. [网络流24题-7]圆桌问题
  3. mysql数据库有几种删除方式_sql有几种删除表数据的方式
  4. VTK:PolyData之RibbonFilter
  5. 输入任意长度的字符串,反向输出(递归)
  6. 生生世世 —— schedule 的轮回(七)
  7. python能做大型游戏吗_python有做大型游戏的潜力吗?
  8. 在线重定义的补充测试
  9. Unity官方教程Ruby大冒险的自学笔记
  10. 苹果新品又要来了 下周可能推出AirPods Studio
  11. python程序设计从基础到开发课后题答案夏敏捷_Python程序设计——从基础到开发(21世纪高等学校计算机应用技术规划教材)...
  12. RouterOS(ROS)软路由端口映射转发回流
  13. Atlas500 ROS Ubuntu容器硬件接口及网络映射配置
  14. 软件工程师找不到工作的四个原因
  15. xdg-open命令
  16. 第五篇 《小强升职记》
  17. (附源码)app学科竞赛活动报名系统 毕业设计 012239
  18. 电子白板-第12届蓝桥杯Scratch选拔赛真题精选
  19. 《数字图像处理》第三章学习总结感悟1:灰度变换与空间滤波概念及常用灰度变换方法介绍
  20. 众包,一个不成熟的类威客概念

热门文章

  1. win10无线投屏_如何将安卓手机实时投屏到个人电脑
  2. 2018宾汉姆顿大学计算机排名,2020年宾汉姆顿大学QS世界排名
  3. 转:飝兒物語的“Linux创建、删除文件夹”
  4. Qt 官方示例 | 这几个 QML 版的 Hello World 你学会了吗?
  5. v-on:click(简写@click)绑定事件加括号和不加括号
  6. VMware 安装出现“不能对软件降级“和“用户在命令行上发出了 EULAS_AGREED=1,表示不接受许可协议。“
  7. 懒惰学习_为了懒惰!
  8. Centos之目录处理命令
  9. 哈佛区块链最新研究:NFT 2.0投资指南
  10. 淘宝二维码对网店推广的好处