題解 P5663 加工零件 民間資料

2022-03-26 06:28:22 字數 1159 閱讀 8690

首先,看到這道題,我直接想到的是遞迴,於是複雜度就上天了,考慮最短路

首先,看一張圖

我們該如何解決問題?

問題:\(3\)做\(5\)階段的零件\(1\)要不要做呢?

其實,實質就是看\(3\)到\(1\)有沒有長度為\(5\)的路徑。

問題:\(3\)做\(7\)階段的零件\(1\)要不要做呢?

其實,實質就是看\(3\)到\(1\)有沒有長度為\(7\)的路徑。

問題:\(3\)做\(6\)階段的零件\(1\)要不要做呢?

其實,實質就是看\(3\)到\(1\)有沒有長度為\(6\)的路徑。

仔細思考這\(3\)個問題,我們會發現,如果\(3\)到\(1\)有長度為\(5\)的路徑,那麼\(3\)到\(1\)一定有長度為\(7\)的路徑,但並不一定有長度為\(6\)的路徑。

所以,我們要對每個點求一遍奇數路徑,和偶數路徑。

最短路的演算法有很多,這道題最好用\(dijkstra\),或\(bfs\)。

這道題的時限並不緊,並且\(dijkstra\)細節太多,我就來演示\(bfs\)實現的最短路

void bfw()

bfw();//跑最短路

while(q--)else

} return 0;

}

先來看一看這題完整的**了

#include using namespace std;

templateinline void read(t &ff)

templatevoid write(t x)

vectorv[100010];

int ji[100010],ou[100010];

void bfw()else

} return 0;

}

這道題還是比較有思維含量的,民間資料也出的很好,讓我們思考全面。

題解 LuoGu5663 加工零件

原題傳送門 傳送帶可以理解為邊權為1的一條邊 題目可以轉化成乙個可以重複來回走的無向圖中,對於每個詢問 a,l a,l a,l 詢問1是否有到a aa長度為l ll的路徑 那麼如果兩個點之間存在長度為x xx的路徑,那麼這兩個點必定存在長度為x 2 x 2x 2的路徑 但是這兩個點之間卻不一定存在長...

零件加工 貪心 題解

時間限制 1 sec 記憶體限制 128 mb 提交 24 解決 7 提交 狀態 討論版 命題人 外部匯入 題目描述 工匠小k最近有n個零件需要加工。每個零件都需要ti天的時間來完成,每個零件每延遲一天加工都要繳納一定的罰金si。延遲的天數為從今天算起到該工作開始的那天,第乙個零件加工沒有罰金。現在...

NOIP 加工零件 題解

加工零件凱凱的工廠正在有條不紊地生產一種神奇的零件,神奇的零件的生產過程自然也很神奇。工廠裡有 nn 位工人,工人們從 1 sim n1 n 編號。某些工人之間存在雙向的零件傳送帶。保證每兩名工人之間最多隻存在一條傳送帶。如果 xx 號工人想生產乙個被加工到第 l l gt 1 l l 1 階段的零...