hdu 2830 任意交換列的矩陣

2022-05-13 18:04:43 字數 878 閱讀 2226

這2天 做的都是有關矩陣的 =-=....

小小矩陣 竟然有這麼多 花頭...

這題 的特點是 we can swap any two columns any times 就是可以任意交換x列與y列 任意次

一開始 我還擔心我的方法 會不會tle 看到3000ms就放心了。。。我總覺得 會有更高效的方法 可惜我還沒想到

我的思路 就是 假如當前第x行共y列 高度分別是 3 4 5 2 3 6

那麼高度》=2的就是6-0個  這個共6列 0可以看成是(cnt[0] + cnt[1] )之和 你可以假設我們也擺放了高度為0 與 1的柱形體0個

同理 高度》=3的就是6-1個...

那麼 我就是用這個方法進行計算的 蠻簡單的 就是會有一些細節注意處理就好了  如 cnt陣列在每一行都應該重置為0 因為每行的h陣列都是在變化的

--------------其實沒那麼多好扯的 =-=  我先把**隱藏了 如果現在沒做出來 可以做下看 ~

1 #include 2

using

namespace

std;34

const

int size = 1010;5

char

str[size];

6int

h[size];

7int

cnt[size];89

intmain()

1032

for( int k = 0 ; k<=maxh ; k++)

3341 cnt[k] = 0;42

}43}44 cout << ans <

46return0;

47 }

view code

hdu2830 可交換行的最大子矩陣

題意 求最大子矩陣,但是相鄰的列之間可以相互交換.思路 回想下固定的情況,記得那種情況是開倆個陣列 l i r i 記錄小於等於i的最左邊和最右邊在哪個位置,對於這個題目,可以交換,也就是說順序是可以自己隨意更改的,那麼我們直接sort一便,然後在找最大就行了,說下具體過程,便於理解 開始我們建立乙...

hdu2830可變換位置的hdu2870變型

題目大意 給定乙個bool矩陣.可以交換任意兩行的位置任意次.找到乙個最大子矩陣.全部是1 解題思路 把bool圖同樣轉換成乙個個處理一行數的情形.由於可以任意交換col.那麼對於col來說的話.其上所能形成的dp序列是不會變的.dp i 表示在一col中到第i個位置所能形成 的連續1有幾個 同時....

hdu 2830 逐行掃瞄dp求最大完全矩形

求最大完全矩形的基本思想就是以每一行作為底,因為任意列可以呼叫,我們記錄當前行為底的時候以某乙個點的高度,然後排序,從大到小的排序,然後掃瞄到後面每乙個點的高度為矩形高度的最大矩形面積就是h i i 具體步驟如下 很好的思路 include include include include defin...