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. linux 文本行倒叙,Linux基础(4)之文本处理
  2. 经典网络AlexNet介绍
  3. php类使用场景,php类与对象得使用场景
  4. 2019-1-17王志颖 c语言作业
  5. Python搭建静态web服务器
  6. Manual手册的正确姿势
  7. android手机编译可运行的linux程序
  8. mysql极客_极客mysql16
  9. Showdoc 搭建项目 API 文档系统
  10. php使用函数封装去除空格,去除php注释和去除空格函数分享_PHP教程
  11. ONES X 中农网|多产品线研发项目管理实践
  12. nginx配置实现代理多个内网地址
  13. Android Studio修改主题设置主题背景图片
  14. 一款基于Zigbee技术的智慧鱼塘系统研究与设计
  15. 解决IE浏览器打开,出现不能为“read”的问题
  16. 201819102040张辰飞
  17. mix2s android p,待遇堪比“亲儿子” 小米MIX 2s迎来Android P升级
  18. linux驱动21:内核创建类class_create
  19. key 、primary key 、unique key 与index区别
  20. 广告效果聚类分析(KMeans)

热门文章

  1. 2.1Mysql 基础--基本介绍
  2. 怎么制作电脑动态壁纸 桌面高清动态图怎么做
  3. ubuntu 上交叉编译 linaro 的库
  4. oracle多个参数查询,Oracle 多参数查询语句
  5. 有各组方差怎么算组间平方和_方差分析:组间离差平方和组内离差平方的定义是什么?...
  6. 第三方广告平台admob聚合接入过程
  7. jQuery 3D图片切换动画
  8. 随身WIFI刷入debian
  9. 上传淘宝网图片获取相似商品信息
  10. S3C2440移植uboot之支持NAND启动