洛谷 最大加權矩形 字首和,dp,矩陣壓縮

2021-10-06 10:15:49 字數 1747 閱讀 1148

題目鏈結

題目:

思路:

這個就類似最大子串行,有人會問,這和最大子串行有關係???,其實在我們進行矩陣壓縮後,這個問題其實就變成了最大子串行

矩陣壓縮:我的理解就是把矩陣分成小的矩陣(把每種情況都分出來)。

例我們有矩陣:

1 2 3

4 5 6

7 8 9

我們先列舉第一行 1 2 3.

再加上的第二行 1 2 3 和 4 5 6

再加上第三行 1 2 3 和 4 5 6 和 7 8 9

再列舉第二行 4 5 6

再加上第三行 4 5 6 和 7 8 9

再列舉第三行 7 8 9

這樣做有什麼意思呢?這裡我們就要用字首和陣列k,在上面的每一種情況下,進行字首和,這裡的字首和是

字首列之和,如: 1 2 3和 4 5 6 可以變成 5 7 9.

當變成一行的時候,就是最大子串行了,就是dp操作了。

詳情**注釋

#include

inline

intread()

while

(c >=

'0'&& c <=

'9')

return x*s;

}using

namespace std;

#define newnode (treenode *)malloc(sizeof(treenode))

#define mem(a,b) memset(a,b,sizeof(a))

const

int n =

1e8+5;

const

long

long infinf =

0x7f7f7f7f7f7f7f

;const

int inf =

0x3f3f3f3f

;const

double eps =

1e-7

;const

unsigned

long

long mod =

998244353

;const

double ii =

acos(-

1);const

double pp =

(ii*

1.0)/(

180.00);

typedef

long

long ll;

typedef

unsigned

long

long ull;

typedef pair<

int,

int> pii;

typedef pair piil;

int n,map[

150]

[150

],ans;

void

max(

int k)

;for

(int i =

1;i <= n;i++)}

void

solve()

;for

(int j = i;j <= n;j++

)max

(k);}}

}int

main()

洛谷 P1719最大加權矩形

題目描述 矩陣的每乙個元素都有一權值,權值定義在整數集上。從中找一矩形,矩形大小無限制,是其中包含的所有元素的和最大 即求最大加權矩形。輸入輸出格式 輸入格式 第一行 n,接下來是n行n列的矩陣。輸出格式 最大矩形 子矩陣 的和。思路分析 此題要將二維的矩陣壓縮成一維,然後對壓縮後的序列求最大子串行...

洛谷 P1719 最大加權矩形

為了更好的備戰noip2013,電腦組的幾個女孩子lyq,zsc,zhq認為,我們不光需要機房,我們還需要運動,於是就決定找校長申請一塊電腦組的課餘運動場地,聽說她們都是電腦組的高手,校長沒有馬上答應他們,而是先給她們出了一道數學題,並且告訴她們 你們能獲得的運動場地的面積就是你們能找到的這個最大的...

P1719 最大加權矩形 字首和

題目描述 為了更好的備戰noip2013,電腦組的幾個女孩子lyq,zsc,zhq認為,我們不光需要機房,我們還需要運動,於是就決定找校長申請一塊電腦組的課餘運動場地,聽說她們都是電腦組的高手,校長沒有馬上答應他們,而是先給她們出了一道數學題,並且告訴她們 你們能獲得的運動場地的面積就是你們能找到的...