原題傳送門
傳送帶可以理解為邊權為1的一條邊
題目可以轉化成乙個可以重複來回走的無向圖中,對於每個詢問(a,
l)
(a,l)
(a,l
),詢問1是否有到a
aa長度為l
ll的路徑
那麼如果兩個點之間存在長度為x
xx的路徑,那麼這兩個點必定存在長度為x+2
x+2x+
2的路徑
但是這兩個點之間卻不一定存在長度為x−2
x-2x−
2,或是x+1
x+1x+
1的路徑
所以我們可以求1到每個點的奇數最短路和偶數最短路,用dijkstra就好了
code:
#include
#define maxn 100010
using
namespace std;
struct edgeedge[maxn <<1]
;struct heap};
priority_queue q;
int dis[maxn][2
], vis[maxn][2
], n, m, q, num, head[maxn]
;inline
intread()
void
addedge
(int x,
int y)
, head[x]
= num;
}int
main()
for(
int i =
2; i <= n;
++i) dis[i][0
]= dis[i][1
]=2e9;
dis[1]
[1]=
2e9;
q.push
((heap));
while
(!q.
empty()
));}
}}while
(q--
)return0;
}
題解 P5663 加工零件 民間資料
首先,看到這道題,我直接想到的是遞迴,於是複雜度就上天了,考慮最短路。首先,看一張圖 我們該如何解決問題?問題 3 做 5 階段的零件 1 要不要做呢?其實,實質就是看 3 到 1 有沒有長度為 5 的路徑。問題 3 做 7 階段的零件 1 要不要做呢?其實,實質就是看 3 到 1 有沒有長度為 7...
零件加工 貪心 題解
時間限制 1 sec 記憶體限制 128 mb 提交 24 解決 7 提交 狀態 討論版 命題人 外部匯入 題目描述 工匠小k最近有n個零件需要加工。每個零件都需要ti天的時間來完成,每個零件每延遲一天加工都要繳納一定的罰金si。延遲的天數為從今天算起到該工作開始的那天,第乙個零件加工沒有罰金。現在...
NOIP 加工零件 題解
加工零件凱凱的工廠正在有條不紊地生產一種神奇的零件,神奇的零件的生產過程自然也很神奇。工廠裡有 nn 位工人,工人們從 1 sim n1 n 編號。某些工人之間存在雙向的零件傳送帶。保證每兩名工人之間最多隻存在一條傳送帶。如果 xx 號工人想生產乙個被加工到第 l l gt 1 l l 1 階段的零...