落谷 P3403 跳樓機(同餘最短路)
這道題和裸的同餘最短路思路是相同的,對於演算法的介紹請轉至蒟蒻(我)的另一篇題解:
https://blog.csdn.net/zzk_233/article/details/83419118
但是這道題有一些不同,起點是1,所以跑最短路的時候要把1先推入佇列,
而且dis[1]=1,因為雖然他是第一個,但是它要求的大小還是1。
其餘還是一樣的。
PS:一定要取模!!!最開始的1也要!!這是個坑點。
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<queue>
using namespace std;
typedef long long ll;
ll zans;int n;
ll dis[500005],val[500005];
bool used[500005];
ll maxv=0x3f3f3f3f3f3f3f3fll;
void spfa()
{
memset(dis,0x3f,sizeof(dis));
dis[1%maxv]=1;
queue<int>M;
M.push(1%maxv);
used[1%maxv]=1;
while(!M.empty())
{
int u=M.front();
M.pop();
for(int i=1;i<=n;i++)
{
int y=(u+val[i])%maxv;
if(dis[y]>dis[u]+val[i])
{
dis[y]=dis[u]+val[i];
if(!used[y])
{
used[y]=1;
M.push(y);
}
}
}
used[u]=0;
}
}
ll query(ll x)
{
ll ans=0;
for(int i=0;i<maxv;i++)
{
if(dis[i]<=x)ans+=(x-dis[i])/maxv+1;
}
return ans;
}
int main()
{
n=3;scanf("%lld",&zans);
for(int i=1;i<=n;i++)
{
scanf("%lld",&val[i]);
if(!val[i])i--,n--;
maxv=min(maxv,val[i]);
}
spfa();
printf("%lld",query(zans));
return 0;
}
相關文章
- 淺談同餘最短路
- 同餘最短路學習筆記筆記
- CSP2024-11 + 同餘最短路
- 【演算法學習】同餘最短路演算法
- 同餘
- P2371-[國家集訓隊]墨墨的等式【同餘最短路】
- 最短路:求最長最短路
- 最短路 || 最長路 || 次短路
- Luogu P5663 CSP-J2019 加工零件 題解 [ 綠 ] [ 同餘最短路 ]
- 初等數論——同餘
- 幫餘晟同學打個廣告
- 洛谷P1602_bfs+同餘定理
- 最長同值路徑
- 數論學習筆記 (5):同餘與逆元筆記
- 線性同餘-常見語言編譯器引數編譯
- [學習筆記] 丟番圖方程 & 同餘 & 逆元 - 數論筆記
- 第3章 同餘式 -《資訊保安數學基礎》
- 687. 最長同值路徑
- P1082 [NOIP2012 提高組] 同餘方程 尤拉定理
- 1232: 手機剩餘電量
- 最短路
- 次短路
- 最大值(最短路+最短路計數)
- 同策研究院:全國樓市2022趨勢預判(附下載)
- 「雜談」同學聚會最悲哀的事情
- 第六章 數學問題 -------- 6.10 特殊的同餘方程—逆元
- 靜安58歲男子餓死家中?不實!同樓居民還原事情經過
- 2024_4_22 路徑花費為最長$k$條邊之和最短路
- 【最完整系列】Redis-結構篇-跳躍列表Redis
- top.location.href(最外層的頁面跳轉)
- 最短路-Floyd
- 餘數的餘數
- 機器人跳躍問題機器人
- 什麼是POS機跳碼
- 阿里巴巴研究員叔同:雲原生是企業數字創新的最短路徑阿里
- 微信跳一跳作弊軟體連線手機流程
- 數論入門基礎(同餘定理/費馬小定理/擴充套件歐幾里德演算法/中國剩餘定理)套件演算法
- 2020年初最“壕”的祝福!《部落衝突》買樓給玩家上“牆”