跳楼机

题目描述

Srwudi的家是一幢h层的摩天大楼。由于前来学习的蒟蒻越来越多,srwudi改造了一个跳楼机,使得访客可以更方便的上楼。

经过改造,srwudi的跳楼机可以采用以下四种方式移动:

1、向上移动x层;

2、向上移动y层;

3、向上移动z层;

4、回到第一层。

一个月黑风高的大中午,DJL来到了srwudi的家,现在他在srwudi家的第一层,碰巧跳楼机也在第一层。

DJL想知道,他可以乘坐跳楼机前往的楼层数。

输入格式

第一行一个整数h,表示摩天大楼的层数。

第二行三个正整数,分别表示题目中的x, y, z。

输出格式

一行一个整数,表示DJL可以到达的楼层数。

样例数据

input

15
4 7 9
output

9

样例解释

可以到达的楼层有:1,5,8,9,10,12,13,14,15
数据规模与约定
对于20%的数据,1≤h, x, y, z≤100;

对于40%的数据,1≤h, x, y, z≤10^5;

对于100%的数据,1≤h≤10^18,1≤x, y, z≤10^5。

时间限制:1s
空间限制:256MB


这题有一点偏数学……
需要用到最短路模型,主要还是思维难度~

代码很简单的

#include<bits/stdc++.h>
using namespace std;
long long h,x,y,z,ans,len;
const int N=100005;
long long last[N*2],f[N*2],dis[N*2];
bool vis[N*2];
struct ss
{int to,next,v;
}e[N*2];
void insert(long long x,long long y,long long v)
{e[++len].next=last[x];e[len].to=y;e[len].v=v;last[x]=len;
}
queue<long long> q;
void SPFA()
{memset(f,0x3f3f3f,sizeof(f));f[1]=1,vis[1]=1;q.push(1);while(!q.empty()){long long _x=q.front(),i=last[_x];for(q.pop();i;i=e[i].next){long long v=e[i].to;if(f[v]>f[_x]+e[i].v){f[v]=f[_x]+e[i].v;if(!vis[v])vis[v]=1,q.push(v);}}vis[_x]=0;}
}
int main()
{freopen("srwudi.in","r",stdin);freopen("srwudi.out","w",stdout);int i=-1;scanf("%lld%lld%lld%lld",&h,&x,&y,&z);if(x==1||y==1||z==1){printf("%lld",h);return 0;} if(x>y)swap(x,y);if(y>z)swap(y,z);if(x>z)swap(x,z);for(i=-1;++i<=x-1;){insert(i,(i+y)%x,y);insert(i,(i+z)%x,z);}  SPFA();for(i=-1;++i<=x-1;)if(h>=f[i])ans+=(h-f[i])/x+1;printf("%lld",ans);return 0;
}

谢谢观赏哦~~

寒假2019培训:跳楼机(洛谷P3403)相关推荐

  1. 最短路模型-跳楼机-洛谷P3403

    第一次遇到这种数学题转化为图论的题目,与我一开始的想法相同,将其中一个变量与另外两个变量分离开来,便于处理.由于以前一直认为SPFA会被卡,所以使用了堆优化的Dijkstra,结果超时了,为什么呢?因 ...

  2. 【洛谷 P3403】跳楼机(SPFA)

    P3403 跳楼机 题目背景 DJL为了避免成为一只咸鱼,来找srwudi学习压代码的技巧. 题目描述 Srwudi的家是一幢h层的摩天大楼.由于前来学习的蒟蒻越来越多,srwudi改造了一个跳楼机, ...

  3. 【寒假每日一题】洛谷 P2404 自然数的拆分问题

    题目链接:P2404 自然数的拆分问题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述 任何一个大于 1 的自然数 n,总可以拆分成若干个小于 n 的自然数之和.现在给你一 ...

  4. 【寒假每日一题】洛谷 P5734 【深基6.例6】文字处理软件

    题目链接:P5734 [深基6.例6]文字处理软件 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述 你需要开发一款文字处理软件.最开始时输入一个字符串作为初始文档.可以认为 ...

  5. 【寒假每日一题】洛谷 P7471 [NOI Online 2021 入门组] 切蛋糕

    题目链接:P7471 [NOI Online 2021 入门组] 切蛋糕 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述 Alice.Bob 和 Cindy 三个好朋友得到 ...

  6. 【寒假每日一题】洛谷 P6367 [COCI2006-2007#6] PRASE

    题目链接:P6367 [COCI2006-2007#6] PRASE - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述 孩子们正在餐桌旁吃午餐,共有 n 份食物,孩子们会按照 ...

  7. 【2019 CSP-JのT4】[洛谷P5663]加工零件【最短路 · 变式】

    题目描述 linklinklink 凯凯的工厂正在有条不紊地生产一种神奇的零件,神奇的零件的生产过程自然也很神奇.工厂里有 n 位工人,工人们从 1∼n 编号.某些工人之间存在双向的零件传送带.保证每 ...

  8. 【洛谷3043】跳楼机(最短路)

    [洛谷3043]跳楼机(最短路) 题面 洛谷 题解 思路很妙嗷. 先只考虑只用\(y,z\)两种移动方式,它们一定能够到达一些楼层, 那么这些楼层再只用\(x\)拓展就能够计算答案. 那么我们这样子计 ...

  9. 洛谷 P2717 寒假作业

    题目背景 zzs和zzy正在被寒假作业折磨,然而他们有答案可以抄啊. 题目描述 他们共有n项寒假作业.zzy给每项寒假作业都定义了一个疲劳值Ai,表示抄这个作业所要花的精力.zzs现在想要知道,有多少 ...

  10. 同余最短路(P3403 跳楼机)

    同余最短路 前置 给定m个数,这m个数可以重复取,问最大的这m个数不能拼成的数,或者给定一定范围,范围里有多少个数是这m个数可以拼成的,对于这种问题我们可以考虑同余最短路的算法. P3403 跳楼机 ...

最新文章

  1. 滨州学院计算机自荐考试题型,滨州学院2004—2005学年第一学期期末考试计算机科学教育专业02级《数据库原理》试题及答案(3份,另附习题集)...
  2. 中国农民丰收节交易会李喜贵演讲 微量元素运用功能农业
  3. 【巷子】---vue基于mint-ui三级联动---【vue】
  4. Windows Server 2012 新特性:IPAM的配置
  5. linux的mount(挂载)命令详解(转)
  6. 使用 VS 附加到进程 调试发布的网站
  7. [PYTHON] for循环中关于列表list中remove method 不得不说的秘密
  8. 云和恩墨:2020是国产数据库崛起的发轫之年
  9. react打包服务器文件,react项目搭建及打包发布
  10. 记OC迁移至swift中笔记20tips
  11. 邮箱 / QQ 超链接
  12. Linux nexus3的搭建
  13. 《2018春运大数据预测报告》发布:今年春运将呈现北松南紧”!
  14. AspectJ+AJDT+用Ant管理AspectJ项目+AspectJ教程
  15. MTK DDR进行ETT之后的压力测试--代码调整
  16. [Ansys Workbench] 平面对称斜拉桥的模态分析
  17. win11怎么开启休眠睡眠?
  18. 分享基于SpringBoot2+MybatiPlus+LayUI+Snaker+Mysql技术前后端分离开源后台管理系统脚手架
  19. for linux pdf转mobi_pdftotext —— Linux/Unix中将PDF文件转化为Text文本格式的利器
  20. 《自控力》与《学习之道》

热门文章

  1. Facebook登陆时遇到的问题
  2. (Linux)简单电子通讯录
  3. NTFS安全权限详解
  4. 请没有买房和买车的朋友一定认真的看一下,看后再做决定吧..
  5. SL-积雪效果(hitTest)雪人(snowman)
  6. 中国工科研究生200多篇英文论文中最常见的习惯(The Most Common Habits from more than 200 English Papers written by Gradua)
  7. 怎么看PLC梯形图?
  8. 带通滤波器是什么,它的原理是什么
  9. CentOS 8 添加中文语言包
  10. 64位平台C/C++开发注意事项