首先,看到這道題,我直接想到的是遞迴,於是複雜度就上天了,考慮最短路。
首先,看一張圖
我們該如何解決問題?
問題:\(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 階段的零...