在經過一段時間的經營後,dd_engi的oi商店不滿足於從別的供貨商那裡購買產品放上貨架,而要開始自己生產產品了!產品的生產需要m個步驟,每乙個步驟都可以在n臺機器中的任何一台完成,但生產的步驟必須嚴格按順序執行。由於這n臺機器的效能不同,它們完成每乙個步驟的所需時間也不同。機器i完成第j個步驟的時間為t[i,j]。把半成品從一台機器上搬到另一台機器上也需要一定的時間k。同時,為了保證安全和產品的質量,每台機器最多只能連續完成產品的l個步驟。也就是說,如果有一台機器連續完成了產品的l個步驟,下乙個步驟就必須換一台機器來完成。現在,dd_engi的oi商店有史以來的第乙個產品就要開始生產了,那麼最短需要多長時間呢?
某日azuki.7對躍動說:這樣的題目太簡單,我們把題目的範圍改一改
對於菜鳥躍動來說,這是個很困難的問題,他希望你能幫他解決這個問題
第一行有四個整數m, n, k, l
下面的n行,每行有m個整數。第i+1行的第j個整數為t[j,i]。
輸出只有一行,表示需要的最短時間。
3 2 0 2
2 2 3
1 3 1
copy
4
copy
1s對於50%的資料,n<=5,l<=4,m<=10000
對於100%的資料,n<=5, l<=50000,m<=100000
第一屆「oi商店杯」 dd_engi原創題目
偷懶不寫了···詳細見:
#include#include#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
const
int m=1e5+5
;const
int n=10
;const
int inf=0x7f7f7f7f
;deque
dque[n][n];
intn,m,k,sum[m][n],l,dp[m][n];
inline
intr()
inline
int calc(int i,int k,int
j)int
main()
for(int i=1; i<=n; ++i)
for(int k=1; k<=n; ++k)
if(i!=k)
}int ans=inf;
for(int i=1;i<=n;i++) ans=min(ans,dp[m][i]);
cout
return0;
}
Day1刷題總結
如果進棧序列為e1,e2,e3,e4,則不可能的出棧序列是 d a.e2,e4,e3,e1 b.e4,e3,e2,e1 c.e1,e2,e3,e4 d.e3,e1,e4,e2 解析 對於a,進棧的順序是先把e1,e2進棧,再把e2出棧,再將e3,e4進棧,這時棧按順序剩下e1,e3,e4,出棧的順序...
牛客c 刷題總結1
引用只是乙個別名,是已有變數的別名,而void型別是空型別,是沒有分配記憶體的。所以引用不能是void型別。int const p const int p 以及 int const p 的區別,前兩個意思是一樣的表示 p的內容不能修改,最後那個指的指標p是個常變數,不能修改它的值。個人理解,cons...
劍指offer C 刷題總結(1)
在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。雙指標 class solution int n array 0 size int l 0 int r n 1...