Description


DJL为了避免成为一只咸鱼,来找srwudi学习压代码的技巧。
Srwudi的家是一幢h层的摩天大楼。由于前来学习的蒟蒻越来越多,srwudi改造了一个跳楼机,使得访客可以更方便的上楼。
经过改造,srwudi的跳楼机可以采用以下四种方式移动:
1、向上移动x层;
2、向上移动y层;
3、向上移动z层;
4、回到第一层。
一个月黑风高的大中午,DJL来到了srwudi的家,现在他在srwudi家的第一层,碰巧跳楼机也在第一层。DJL想知道,他可以乘坐跳楼机前往的楼层数。

Input

第一行一个整数h,表示摩天大楼的层数。
第二行三个正整数,分别表示题目中的x, y, z。

Output

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

Sample Input

154 7 9

Sample Output

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

Data Constraint

对于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。

分析

我们给%x意义下的能够从某个高度到某个高度的情况视为

i-->i+y (%x)

i-->i+z (%x)

那么显然我们可以通过这些“边“跑最短路

然后答案为∑j=0~x-1(h-d[j])/x+1

#include <iostream>
#include <cstdio>
#include <queue>
#include <memory.h>
using namespace std;
typedef long long ll;
const int N=1e5+111;
const ll Inf=9223372036854775807;
struct Edge {int u,v,nx;ll w;
}g[2*N];
ll d[N];
bool b[N];
int cnt,list[N];
ll h,x,y,z,ans;void Add(ll u,ll v,ll w) {g[++cnt].u=u;g[cnt].v=v;g[cnt].w=w;g[cnt].nx=list[u];list[u]=cnt;
}void Spfa() {queue<int> q;while (!q.empty()) q.pop();for (int i=0;i<=x;i++) d[i]=Inf;q.push(1);d[1]=1;b[1]=1;while (!q.empty()) {int u=q.front();q.pop();for (int i=list[u];i;i=g[i].nx)if (d[g[i].v]>d[u]+g[i].w) {d[g[i].v]=d[u]+g[i].w;if (!b[g[i].v]) q.push(g[i].v);b[g[i].v]=1;}b[u]=0;}
}int main() {scanf("%lld",&h);scanf("%lld%lld%lld",&x,&y,&z);if (y<z) swap(y,z);if (x<y) swap(x,y);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-d[i]>=0) ans+=(h-d[i])/x+1;printf("%lld",ans);
}

View Code

转载于:https://www.cnblogs.com/mastervan/p/9526193.html

[spfa][数论]JZOJ 4722 跳楼机相关推荐

  1. JZOJ #4722 跳楼机 (最短路模型的完美转化)

    题目描述: 给出$h,x,y,z$,求在$h$以内,$x,y,z$可以凑出多少个不同的数.$(1\leq{h}\leq{10^{18}},1\leq{x,y,z}\leq{10^5})$ 解题思路: ...

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

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

  3. 【JZOJ A组】跳楼机

    Description DJL为了避免成为一只咸鱼,来找srwudi学习压代码的技巧. Srwudi的家是一幢h层的摩天大楼.由于前来学习的蒟蒻越来越多,srwudi改造了一个跳楼机,使得访客可以更方 ...

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

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

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

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

  6. 机器人无限火力无限e符文_无限火力装备符文评级 召唤师峡谷秒变欢乐谷 机器人化身跳楼机...

    无限火力模式激情上线,拥有80%超快冷却缩减的BUFF,一切都和召唤师峡谷不同.那么在无限火力模式中,哪些装备符文能拥有更为亮眼的表现呢? 装备篇 无限火力最爽的一点就是--装备也能够享受80%的冷却 ...

  7. [2019 牛客CSP-S提高组赛前集训营4题解] 复读数组(数论)+ 路径计数机(数上DP)+ 排列计数机(线段树+二项式定理)

    文章目录 T1:复读数组 题目 题解 代码实现 T2:路径计数机 题目 题解 代码实现 T3:排列计数机 题目 题解 CODE T1:复读数组 题目 有一个长为n×k的数组,它是由长为n的数组A1,A ...

  8. JZOJ4722 跳楼机 巧妙地转换为最短路模型

    题目大意 有一个 H H高的楼房,现在给你三个正整数x,y,zx,y,z表示,在每一层 i i,你有4种选择,到i+xi+x, i+y i+y, i+z i+z层或第 1 1层.问能到多少个楼层. H ...

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

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

  10. P3403 跳楼机 同余最短路

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

最新文章

  1. 还找不到想要的文章吗?公众号搜索方法大全
  2. ZABBIX作集中式NGINX性能监控的注意要点
  3. jquery 配合 ajax 完成 在线编辑 你值得拥有
  4. java thumbnails 中心点_java Thumbnails 图片处理的使用
  5. Springcloud中的region和zone的使用
  6. zend studio 9实用快捷键大全 分享ZEND STUDIO 9的常用快捷键,高亮显示相同变量。...
  7. Bzoj1029 [JSOI2007]建筑抢修
  8. 机智云代码移植_IoT开发者 | 基于STM32F103的机智云宠物屋外加4路继电器开源教程...
  9. 制图折断线_【机械制图】机械设计中的尺寸标注,看懂复杂机械图纸!
  10. 10个你应该了解的Git命令(以及Git省时小窍门)
  11. idea 快速导入实现父类方法_网站seo优化方法,实现快速排名!
  12. 镜像分割与高可用性灾难恢复
  13. jlink v9可升级固件‘_在rt-thread下实现OTA在线固件更新功能
  14. liunx破解root密码精简版
  15. dll修复精灵无法链接服务器,教你一键dll修复精灵怎么使用
  16. matlab 频域滤波
  17. Android Killer的安装和配置 -安卓逆向的必备神器
  18. 基于Java的Minecraft游戏后端自定义插件 04注册命令与处理
  19. MATLAB中关于patch的用法(涉及vertice,faces等的基础的介绍)
  20. AES 解密报错:Given final block not properly padded. Such issues can arise if a bad key is used dur

热门文章

  1. Android应用或游戏集成facebook登陆完整流程
  2. 贴吧老矣,尚能饭否?
  3. 2020年下半年网络工程师上午真题及答案
  4. operators库
  5. 西门子梯形图转换C语言,梯形图和指令表相互转换
  6. BUUCTF-MISC-被劫持的神秘礼物~梅花香之苦寒来
  7. 上传图片到淘宝 API 返回值说明
  8. 清华寒门学子「树洞文」引网友热泪:“自强不息,厚德载物”的践行者
  9. 入门 | S3C2440启动过程分析
  10. linux scl,技术|SCL项目:在Red Hat系列系统上安装同一软件的不同版本