[BZOJ] 1084 [SCOI2005]最大子矩阵
生活随笔
收集整理的這篇文章主要介紹了
[BZOJ] 1084 [SCOI2005]最大子矩阵
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Time Limit: 10 Sec Memory Limit: 162 MB
Submit: 3540 Solved: 1771
[Submit][Status][Discuss]
Description這里有一個n*m的矩陣,請你選出其中k個子矩陣,使得這個k個子矩陣分值之和最大。注意:選出的k個子矩陣
不能相互重疊。Input第一行為n,m,k(1≤n≤100,1≤m≤2,1≤k≤10),接下來n行描述矩陣每行中的每個元素的分值(每個元素的
分值的絕對值不超過32767)。Output只有一行為k個子矩陣分值之和最大為多少。Sample Input
3 2 21 -32 3-2 3
Sample Output
9
m非常非常小,一開始還以為和n一樣,苦惱了半天。。
感覺是狀壓,可是有這種奇怪的情況
11
10
11
10
11
按行掃描的狀壓會認為它是五個矩陣,其實四個就行,就是說我們不知道這個新點是作為原矩陣的一部分還是另成矩陣。。
SYQ大兄弟寫了巨型代碼,分類討論,很強
數據分治一下
m=1時,就是最大子段和問題,f[i][j][1/0]表示前i個,分了j段,且第i個選/不選的情況。
m=2時, 用掃描的思想,f[i][j][k]表示第一列掃到第i個,第二列掃到第j個,分了k個矩陣的情況。
轉移的時候討論列增加,或整塊增加。
用前綴和快速算增加量。
轉載于:https://www.cnblogs.com/ghostcai/p/9247399.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的[BZOJ] 1084 [SCOI2005]最大子矩阵的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win10 64位下运行汇编
- 下一篇: BZOJ1782[USACO 2010