洛谷 P3403 跳楼机
题目背景
DJL为了避免成为一只咸鱼,来找srwudi学习压代码的技巧。
题目描述
Srwudi的家是一幢h层的摩天大楼。由于前来学习的蒟蒻越来越多,srwudi改造了一个跳楼机,使得访客可以更方便的上楼。
经过改造,srwudi的跳楼机可以采用以下四种方式移动:
向上移动x层;
向上移动y层;
向上移动z层;
- 回到第一层。
一个月黑风高的大中午,DJL来到了srwudi的家,现在他在srwudi家的第一层,碰巧跳楼机也在第一层。DJL想知道,他可以乘坐跳楼机前往的楼层数。
输入输出格式
输入格式:
第一行一个整数h,表示摩天大楼的层数。
第二行三个正整数,分别表示题目中的x, y, z。
输出格式:
一行一个整数,表示DJL可以到达的楼层数。
输入输出样例
15 4 7 9
9
33333333333 99005 99002 100000
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 跳楼机相关推荐
- 【洛谷 P3403】跳楼机(SPFA)
P3403 跳楼机 题目背景 DJL为了避免成为一只咸鱼,来找srwudi学习压代码的技巧. 题目描述 Srwudi的家是一幢h层的摩天大楼.由于前来学习的蒟蒻越来越多,srwudi改造了一个跳楼机, ...
- 同余最短路(P3403 跳楼机)
同余最短路 前置 给定m个数,这m个数可以重复取,问最大的这m个数不能拼成的数,或者给定一定范围,范围里有多少个数是这m个数可以拼成的,对于这种问题我们可以考虑同余最短路的算法. P3403 跳楼机 ...
- 最短路模型-跳楼机-洛谷P3403
第一次遇到这种数学题转化为图论的题目,与我一开始的想法相同,将其中一个变量与另外两个变量分离开来,便于处理.由于以前一直认为SPFA会被卡,所以使用了堆优化的Dijkstra,结果超时了,为什么呢?因 ...
- P3403 跳楼机 同余最短路
传送门 题意: 思路: 转换一下题目就是用若干x,y,zx,y,zx,y,z能凑出来多少个<=h<=h<=h的数.先考虑两个数y,zy,zy,z的情况,我们如果能求出来这两个数能凑出 ...
- 用0和5凑被90整除的max数(洛谷P2192题题解,Java语言描述)
题目要求 P2192题目链接 分析 盘一盘各种情况吧: 要被90整除,就必须被10整除,所以必须有0,没0就是-1啊. 要被90整除,一堆5,靠0是没用的,只能是9个5凑一堆儿才有用,有0但凑不够9个 ...
- 超级玛丽游戏(洛谷-P1000)
题目背景 本题是洛谷的试机题目,可以帮助了解洛谷的使用. 题目描述 超级玛丽是一个非常经典的游戏.请你用字符画的形式输出超级玛丽中的一个场景. ********************####.... ...
- 洛谷——P1000 超级玛丽游戏
P1000 超级玛丽游戏 题目背景 本题是洛谷的试机题目,可以帮助了解洛谷的使用. 建议完成本题目后继续尝试P1001.P1008. 另外强烈推荐新用户必读贴 题目描述 超级玛丽是一个非常经典的游戏. ...
- 洛谷P1000 超级玛丽游戏C++题解
首先我们看这道题的题目"超级玛丽游戏",第一道题就让我们写个游戏出来.结果点进去一看,顿时觉得这道题是在开玩笑,本题是洛谷的试机题目,可以帮助了解洛谷的使用. 建议完成本题目后继续 ...
- 洛谷 P2388 阶乘之乘 题解
博客园同步 原题链接 简要题意: 求 ∏ i = 1 n ∏ j = 1 i j \prod_{i=1}^n \prod_{j=1}^i j ∏i=1n∏j=1ij 的末尾有几个零. 显然,我们对 ...
- 【模拟】洛谷 P1000 超级玛丽游戏
题目背景 本题是洛谷的试机题目,可以帮助了解洛谷的使用. 建议完成本题目后继续尝试P1001.P1008. 题目描述 超级玛丽是一个非常经典的游戏.请你用字符画的形式输出超级玛丽中的一个场景. *** ...
最新文章
- 文件读写io操作范例
- SpringBoot 2.0 系列001 -- 入门介绍以及相关概念
- 比特币现金是否失去了去中心化
- AsyncTask应用解析
- 成功解决ImportError: cannot import name ‘joblib‘
- chrome调试、移动端调试
- 单片机为什么一直用C语言,不用其他编程语言?只有学过的知道!
- 小程序组件报错Uncaught TypeError: Cannot read property 'name' of undefined
- centos6中office及中文输入法安装 (转载)
- python所有组合,在python中组合n个列表的所有元素
- Revit 和 ArchiCAD 在软件设计理念方面的对比
- Drupal 在Views 中自定义筛选 Filter
- Unity学习-熟悉环境
- 关于IIC中的SDA SCL输入输出模式
- zabbix4.4.3使用postgresql数据库
- 乔列斯基(Cholesky)法解方程(python,数值积分)
- php tp5微信支付,tp5微信支付踩坑
- 基于BSN的财智联盟链在财税金融领域的应用
- 英文写作笔记(1)Introduction
- 【博学谷学习记录】超强总结,用心分享 | 人工智能编程语言Python常用标准库(上)
热门文章
- excel如何快速录入身份证号码?
- 教你如何使用u盘安装Linux系统,手把手教你如何使用u盘安装Linux系统
- 将 EBS R12.1.1 升级到 R12.1.3
- 梯形图如何实现c语言 f语句,如何注释梯形图
- 用python写一个倒计时器
- 手工内存管理规则的总结
- win10 手动下载升级 Powershell terminal
- 对游戏编程开发的一点思考
- 红米Note3刷机教程(升级安卓9)
- Python可配置爬虫_自定义IP+数据库+日志+分类+分页(代理IP破解反爬虫)