题目背景

DJL为了避免成为一只咸鱼,来找srwudi学习压代码的技巧。

题目描述

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

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

  1. 向上移动x层;

  2. 向上移动y层;

  3. 向上移动z层;

  4. 回到第一层。

一个月黑风高的大中午,DJL来到了srwudi的家,现在他在srwudi家的第一层,碰巧跳楼机也在第一层。DJL想知道,他可以乘坐跳楼机前往的楼层数。

输入输出格式

输入格式:

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

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

输出格式:

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

输入输出样例

输入样例#1:

15
4 7 9

输出样例#1:

9

输入样例#2:

33333333333
99005 99002 100000

输出样例#2:

33302114671

说明

可以到达的楼层有:1,5,8,9,10,12,13,14,15

想不出来不要死磕这一题,先看看第三题。。。。

1<=h<=2^63-1

1<=x, y, z<=100000

~~~~~~~~~~~~~~~~~~~~~~~~

SPFA+思路~

超老的一道题了……今天终于决定看一下……

用f[i]表示能达到的最低的%x=i的层高,那么所有f[i]+x*k(k>=0)的层数都能达到。

我们用SPFA来求出f[i]。

#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
#define ll long longint x,y,z,fi[100001],w[200001],ne[200001],v[200001],cnt;
ll h,f[100001],ans;
bool b[100001];queue<int> q;void add(int u,int vv,int val)
{w[++cnt]=vv;ne[cnt]=fi[u];fi[u]=cnt;v[cnt]=val;
}void spfa()
{memset(f,127/3,sizeof(f));f[1]=1;b[1]=1;q.push(1);while(!q.empty()){int k=q.front();q.pop();for(int i=fi[k];i;i=ne[i])if(f[w[i]]>f[k]+(ll)v[i]){f[w[i]]=f[k]+(ll)v[i];if(!b[w[i]]){b[w[i]]=1;q.push(w[i]);}}b[k]=0;}
}int main()
{scanf("%lld%d%d%d",&h,&x,&y,&z);if(x<y) swap(x,y);if(x<z) swap(x,z);for(int i=0;i<x;i++) add(i,(i+y)%x,y),add(i,(i+z)%x,z);spfa();for(int i=0;i<x;i++) if(h>=f[i]) ans+=(h-f[i])/x+1;printf("%lld\n",ans);return 0;
}

洛谷 P3403 跳楼机相关推荐

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

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

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

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

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

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

  4. P3403 跳楼机 同余最短路

    传送门 题意: 思路: 转换一下题目就是用若干x,y,zx,y,zx,y,z能凑出来多少个<=h<=h<=h的数.先考虑两个数y,zy,zy,z的情况,我们如果能求出来这两个数能凑出 ...

  5. 用0和5凑被90整除的max数(洛谷P2192题题解,Java语言描述)

    题目要求 P2192题目链接 分析 盘一盘各种情况吧: 要被90整除,就必须被10整除,所以必须有0,没0就是-1啊. 要被90整除,一堆5,靠0是没用的,只能是9个5凑一堆儿才有用,有0但凑不够9个 ...

  6. 超级玛丽游戏(洛谷-P1000)

    题目背景 本题是洛谷的试机题目,可以帮助了解洛谷的使用. 题目描述 超级玛丽是一个非常经典的游戏.请你用字符画的形式输出超级玛丽中的一个场景. ********************####.... ...

  7. 洛谷——P1000 超级玛丽游戏

    P1000 超级玛丽游戏 题目背景 本题是洛谷的试机题目,可以帮助了解洛谷的使用. 建议完成本题目后继续尝试P1001.P1008. 另外强烈推荐新用户必读贴 题目描述 超级玛丽是一个非常经典的游戏. ...

  8. 洛谷P1000 超级玛丽游戏C++题解

    首先我们看这道题的题目"超级玛丽游戏",第一道题就让我们写个游戏出来.结果点进去一看,顿时觉得这道题是在开玩笑,本题是洛谷的试机题目,可以帮助了解洛谷的使用. 建议完成本题目后继续 ...

  9. 洛谷 P2388 阶乘之乘 题解

    博客园同步 原题链接 简要题意: 求 ∏ i = 1 n ∏ j = 1 i j \prod_{i=1}^n \prod_{j=1}^i j ∏i=1n​∏j=1i​j 的末尾有几个零. 显然,我们对 ...

  10. 【模拟】洛谷 P1000 超级玛丽游戏

    题目背景 本题是洛谷的试机题目,可以帮助了解洛谷的使用. 建议完成本题目后继续尝试P1001.P1008. 题目描述 超级玛丽是一个非常经典的游戏.请你用字符画的形式输出超级玛丽中的一个场景. *** ...

最新文章

  1. 文件读写io操作范例
  2. SpringBoot 2.0 系列001 -- 入门介绍以及相关概念
  3. 比特币现金是否失去了去中心化
  4. AsyncTask应用解析
  5. 成功解决ImportError: cannot import name ‘joblib‘
  6. chrome调试、移动端调试
  7. 单片机为什么一直用C语言,不用其他编程语言?只有学过的知道!
  8. 小程序组件报错Uncaught TypeError: Cannot read property 'name' of undefined
  9. centos6中office及中文输入法安装 (转载)
  10. python所有组合,在python中组合n个列表的所有元素
  11. Revit 和 ArchiCAD 在软件设计理念方面的对比
  12. Drupal 在Views 中自定义筛选 Filter
  13. Unity学习-熟悉环境
  14. 关于IIC中的SDA SCL输入输出模式
  15. zabbix4.4.3使用postgresql数据库
  16. 乔列斯基(Cholesky)法解方程(python,数值积分)
  17. php tp5微信支付,tp5微信支付踩坑
  18. 基于BSN的财智联盟链在财税金融领域的应用
  19. 英文写作笔记(1)Introduction
  20. 【博学谷学习记录】超强总结,用心分享 | 人工智能编程语言Python常用标准库(上)

热门文章

  1. excel如何快速录入身份证号码?
  2. 教你如何使用u盘安装Linux系统,手把手教你如何使用u盘安装Linux系统
  3. 将 EBS R12.1.1 升级到 R12.1.3
  4. 梯形图如何实现c语言 f语句,如何注释梯形图
  5. 用python写一个倒计时器
  6. 手工内存管理规则的总结
  7. win10 手动下载升级 Powershell terminal
  8. 对游戏编程开发的一点思考
  9. 红米Note3刷机教程(升级安卓9)
  10. Python可配置爬虫_自定义IP+数据库+日志+分类+分页(代理IP破解反爬虫)