題目鏈結
題目:
思路:
這個就類似最大子串行,有人會問,這和最大子串行有關係???,其實在我們進行矩陣壓縮後,這個問題其實就變成了最大子串行
矩陣壓縮:我的理解就是把矩陣分成小的矩陣(把每種情況都分出來)。
例我們有矩陣:
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認為,我們不光需要機房,我們還需要運動,於是就決定找校長申請一塊電腦組的課餘運動場地,聽說她們都是電腦組的高手,校長沒有馬上答應他們,而是先給她們出了一道數學題,並且告訴她們 你們能獲得的運動場地的面積就是你們能找到的...