題目鏈結
給你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 走...