某地臨時居民想獲得長期居住權就必須申請拿到紅牌。獲得紅牌的過程是相當複雜 ,一共包括n個步驟。每一步驟都由**的某個工作人員負責檢查你所提交的材料是否符合條件。為了加快程序,每一步**都派了m個工作人員來檢查材料。不幸的是,並不是每乙個工作人員效率都很高。儘管如此,為了體現「公開**」的政策,**部門把每乙個工作人員的處理乙個申請所花天數都對外界公開。
為了防止所有申請人都到效率高的工作人員去申請。這m*n個工作人員被分成m個小組。每一組在每一步都有乙個工作人員。申請人可以選擇任意乙個小組也可以更換小組。但是更換小組是很嚴格的,一定要相鄰兩個步驟之間來更換,而不能在某一步驟已經開始但還沒結束的時候提出更換,並且也只能從原來的小組i更換到小組i+1,當然從小組m可以更換到小組1。對更換小組的次數沒有限制。
例如:下面是3個小組,每個小組4個步驟工作天數:
小組1 2 6 1 8
小組2 3 6 2 6
小組3 4 2 3 6
例子中,可以選擇小組1來完成整個過程一共花了2+6+1+8=17天,也可以從小組2開始第一步,然後第二步更換到小組3,第三步到小組1,第四步再到小組2,這樣一共花了3+2+1+6=12天。你可以發現沒有比這樣效率更高的選擇。
你的任務是求出完成申請所花最少天數。
輸入格式:
輸入檔案red.in的第一行是兩個正整數n和m,表示步數和小組數。接下來有m行,每行n個非負整數,第i+1(1<=i<=m)行的第j個數表示小組i完成第j步所花的天數,天數都不超過1000000。
輸出格式:
輸入檔案red.out僅包括1個正整數,為完成所有步所需最少天數。。
輸入樣例#1: 複製
4 32 6 1 8
3 6 2 6
4 2 3 6
輸出樣例#1: 複製
12
【資料規模與約定】
對於100%的資料,有n ≤ 2000, m ≤ 2000。
思路:dp.
f[i][j]表示第i次選第j個小組。
#include#include#include
#include
using
namespace
std;
int n,m,ans=0x7f7f7f7f
;int f[2010][2010
];int map[2010][2010
];int
main()
for(int i=1;i<=m;i++) ans=min(ans,f[n][i]);
cout
<}
洛谷P1130紅牌(簡單DP)
某地臨時居民想獲得長期居住權就必須申請拿到紅牌。獲得紅牌的過程是相當複雜 一共包括nnn個步驟。每一步驟都由 的某個工作人員負責檢查你所提交的材料是否符合條件。為了加快程序,每一步 都派了mmm個工作人員來檢查材料。不幸的是,並不是每乙個工作人員效率都很高。儘管如此,為了體現 公開 的政策,部門把每...
洛谷P5049 洛谷P5022 題解 旅行
原題 資料加強版 加強版 參考你谷題解 終於調過了 又是一如既往的申必錯誤 noi plus石錘了 原題的資料允許我們 o n 2 暴力斷邊,但是加強版的資料達到了 n log n 級別,我們必須在斷邊這一環節尋求更好的解法。考慮我們進入環後在何處回溯 根據繼續走環走到的點分類 設當前已經從 b 走...
洛谷練習P2279 P1346
2020年,人類在火星上建立了乙個龐大的基地群,總共有n個基地。起初為了節約材料,人類只修建了n 1條道路來連線這些基地,並且每兩個基地都能夠通過道路到達,所以所有的基地形成了乙個巨大的樹狀結構。如果基地a到基地b至少要經過d條道路的話,我們稱基地a到基地b的距離為d。由於火星上非常乾燥,經常引發火...