Wannafly挑戰賽19 B 矩陣(單調佇列)

2021-08-23 14:41:41 字數 1164 閱讀 9749

矩陣 m 包含 r 行 c 列,第 i 行第 j 列的值為 mi,j。

請尋找乙個子矩陣,使得這個子矩陣的和最大,且滿足以下三個條件:

子矩陣的行數不能超過 x 行。

子矩陣的列數不能超過 y 列。

子矩陣中 0 的個數不能超過 z 個。

請輸出滿足以上條件的最大子矩陣和。

第一行輸入五個整數 r,c,x,y,z。
接下來 n 行,每行輸入 m 個整數,第 i 行第 j 列的整數表示 mi,j。

1 ≤ r,c ≤ 500.

1 ≤ x ≤ r.

1 ≤ y ≤ c.

1 ≤ z ≤ r x c.

-109 ≤ mi,j  ≤ 109

輸出滿足以上條件的最大子矩陣和。
示例1複製

5 5 3 3 4

0 0 10 0 0

3 4 0 2 3

-1 3 0 -8 3

0 0 32 -9 3

3 0 45 3 0

複製

82
示例2

複製

2 2 2 2 2

-1 -1

-1 -1

複製

Wannafly 挑戰賽 19 參考題解

這一次的 wannafly 挑戰賽題目是我出的,除了第一題,剩餘的題目好像對大部分演算法競賽者來說好像都不是特別友好,但是個人感覺題目質量還是過得去的,下面是題目鏈結以及題解。題目鏈結 wannafly 挑戰賽 19 參考題解 problem a.佇列 q 將操作離線倒序處理,可以線性效率解決這個問...

Wannafly挑戰賽 19 A 佇列Q 思維

這道題剛開始我的想法是用兩個棧分別去存first和last所操作的數,用map標記入棧的數,然後先將first棧中的數輸出,然後再遍歷陣列輸出沒有被標記的數,最後再輸出last棧中的數,雖然我覺得沒什麼問題吧,但是只過了5 的樣例。能ac的方法就是首先我們要從100000開始輸入資料 至於為什麼等會...

牛客 wannafly挑戰賽19 A 佇列

zzt 創造了乙個佇列 q。這個佇列包含了 n 個元素,佇列中的第 i 個元素用 qi 表示。q1 表示隊頭元素,qn 表示隊尾元素。佇列中的元素是 n 的乙個全排列。zzt 需要在這個佇列上執行 p 次操作,操作分兩種 first x 將元素 x 移到隊頭。last x 將元素 x 移到隊尾。在 ...