洛谷P2196 挖地雷

2022-03-20 01:06:58 字數 1147 閱讀 4564

題目鏈結

給你n個地窖和路徑,求最多能挖多少雷,和挖雷最多的路徑。

第一行乙個整數n表示有n個地窖

第二行有n個整數表示每個地窖的地雷數

以下有若干行,每行有兩個數x,y表示x可以到y,保證x小於y

最後一行有兩個0,表示輸入結束

第一行輸出挖地雷的順序。

第二行為最多挖出的地雷數

輸入 #1

5

10 8 4 7 6

1 1 1 0

0 0 0

1 11

輸出 #1

這是樣例的圖

再看一下輸入的描述,你會發現所有路徑都是從編號小的到編號大的。既然這樣,那編號大的肯定能由編號小的推出來。

這其實就是核心的思路了。具體流程看注釋吧

#include#include#includeusing namespace std;

const int maxn = 1e3;

int n, x, y, ans, cnt, a[maxn], g[maxn][maxn], pre[maxn], pos, f[maxn], que[maxn];//f[i]表示前i號節點的最大數量

int main()

for(int i=1; i<=n; i++)

int tmp = pos;

while(pre[pos])

for(int i=cnt; i>=1; i--) printf("%d-", que[i]);

printf("%d\n", tmp);

printf("%d\n", f[tmp]);

return 0;

}

洛谷P2196 挖地雷

仔細看題 其實就是數塔問題的變種,多了乙個能否訪問的條件。所以就按照他的思路來就行了,多乙個way來儲存兩個地點是否能夠到達。關於選擇的輸出,用path陣列儲存前驅即可,include using namespace std const int nmax 25 int mine nmax int w...

題解 P2196 挖地雷

作為乙個剛剛接觸oi的蒟蒻,看到題目想都沒想就寫了乙個搜尋,列舉每乙個地窖作為起點再比較答案然後記錄下最優的,雖然此方法十分地暴力,但由於n 20所以仍然能ac的 include include include using namespace std const int maxn 20 int n,...

洛谷P5049 洛谷P5022 題解 旅行

原題 資料加強版 加強版 參考你谷題解 終於調過了 又是一如既往的申必錯誤 noi plus石錘了 原題的資料允許我們 o n 2 暴力斷邊,但是加強版的資料達到了 n log n 級別,我們必須在斷邊這一環節尋求更好的解法。考慮我們進入環後在何處回溯 根據繼續走環走到的點分類 設當前已經從 b 走...