乙個被分為 n*m 個格仔的糖果盒,第 i 行第 j 列位置的格仔裡面有 a [ i ][ j ] 顆糖。本來 tenshi 打算送這盒糖果給某 ppmm 的,但是就在要送出糖果盒的前一天晚上,乙隻極其可惡的老鼠夜襲糖果盒,有部分格仔被洗劫並且穿了洞。tenshi 必須盡快從這個糖果盒裡面切割出乙個矩形糖果盒,新的糖果盒不能有洞,並且 tenshi 希望保留在新糖果盒內的糖的總數盡量多。
請幫 tenshi 設計乙個程式 計算一下新糖果盒最多能夠保留多少糖果。
輸入格式
從標準輸入讀入資料。第一行有兩個整數 n、m。第 i + 1 行的第 j 個數表示 a [ i ][ j ],如果這個數為 0 ,則表示這個位置的格仔被洗劫過。其中:
1 ≤ n,m ≤ 1000
0 ≤ a [ i ][ j ]≤ 255
輸出格式
輸出最大糖果數到標準輸出。
樣例input
3 41 2 3 4
5 0 6 3
10 3 4 0
output
17思路:
這篇**裡的題
使用懸線法,列舉極大子矩陣然後求這個子矩陣的和,複雜度是n^2的
不過你也可以把壞點設成-inf,然後dp求最大子矩陣和;但這個演算法貌似只能n^3。
#include
#include
#include
#include
using
namespace std;
typedef
long
long ll;
const
int maxn =
1005
;int a[maxn]
[maxn]
,dp[maxn]
[maxn]
;int l[maxn]
[maxn]
,r[maxn]
[maxn]
,up[maxn]
[maxn]
;int
main()
}int ans =0;
for(
int i =
1;i <= n;i++
)else
}for
(int j = m;j >=
1;j--
)else}}
printf
("%d\n"
,ans)
;return0;
}
EOJ 莫干山奇遇
出題人當然是希望出的題目有關oxx,於是想方設法給題目配上一些有關oxx的背景故事,使得它看起來不那麼無趣。但有的時候卻無法引入合適的小姐姐,使得oxx顯得非常可憐。所以出題人刪除了故事,只留下乙個枯燥乏味的數學問題。故事已刪除 給乙個長度為n的序列a1,a2,an,求乙個長度為m的序列b1,b2,...
模擬106 題解
顯然的區間dp。斷環成鏈,預處理出每個連續區間集合的元素個數。然後直接dp就完了。想了一些簡單的貪心,然後都偽了。所以考慮如何暴力 o n 2 來做這個題。列舉最終用來跳最後一步的藥丸,顯然前面的藥丸可以按 a i b i 排序。然後考慮如何優化這個過程,問題在於如何判斷溺水的情況。溺水的情況只出現...
10 6 拓撲排序
拓撲排序的重要應用 判斷乙個給定的圖是否是 有向無環 圖 這道題也沒啥好說的,就是注意一點 用queue結果wa了,樣例結果是0 3 1 2,題目中說 請按照題目描述中的演算法依次輸出圖的拓撲有序序列 題中用的是stack,所以將queue改為stack後ac,樣例結果3 0 1 2 這兩個答案其實...