題解 P2135 方塊消除

2021-10-08 18:28:30 字數 2610 閱讀 5657

題目傳送門

區間dp

一道模擬賽的題目,然後一直在推 fl,

rf_

fl,r

​ 為 [l,

r]

[l,r]

[l,r

] 區間的最大貢獻的轉移一直沒搞出來,後來發現由於刪除一塊會使得兩端顏色相同的塊合併就很難轉移,於是我們多記錄一維 fl,

r,sf_

fl,r,s

​ 表示 [l,

r]

[l,r]

[l,r

] 區間內以及在 (r,

n]

(r,n]

(r,n

] 這段區間緊接 r

rr 的與 col

rcol_r

colr

​ 相同的個數為 sss。

轉移我們分兩種情況轉移:

( 1)

(1)(1

) 直接搞掉後面那一段,那麼轉移:fl,

r,s=

fl,r

−1,0

+(s+

lenr

)2

f_=f_+(s+len_r)^2

fl,r,s

​=fl

,r−1

,0​+

(s+l

enr​

)2,這個理解不難的。

( 2)

(2)(2

) 我們在 [l,

r)

[l,r)

[l,r

) 這段區間裡找乙個 i

ii 使得 col

i=co

lr

col_i=col_r

coli​=

colr

​,這時候我們是刪掉 (i,

r)

(i,r)

(i,r

) 這段區間使得 i,r

i,ri,

r 合併。此時轉移為:fl,

r,s=

max⁡i=

lr−1

(fl,

r,s,

fl,i

,len

r+s+

fi+1

,r−1

,0

)f_=\max\limits_^(f_,f_+f_)

fl,r,s

​=i=

lmaxr−

1​(f

l,r,

s​,f

l,i,

lenr

​+s​

+fi+

1,r−

1,0​

)。這樣時間複雜度: o(n

4)

o(n^4)

o(n4

)

#include

#define for(i,a,b) for ( int i=(a);i<=(b);i++ )

#define dow(i,b,a) for ( int i=(b);i>=(a);i-- )

#define go(i,x) for ( int i=head[x];i;i=e[i].nex )

#define mem(x,s) memset(x,s,sizeof(x))

#define cpy(x,s) memcpy(x,s,sizeof(x))

#define yes return puts("yes"),0

#define no return puts("no"),0

#define gg return puts("-1"),0

#define pb push_back

#define sqr(x) ((x)*(x))

using

namespace std;

struct io

inline

chargc(

)inline

bool

blank

(char ch)

template

<

class

t>

inline

void

read

(t &x)

inline

void

read

(char

*s)inline

void

read

(char

&c)template

<

class

t>

inline

void

write

(t x)

}} io;

const

int mod=

1e9+7;

const

int mo=

998244353

;const

int n=

2e2+5;

int n,m,col[n]

,len[n]

,pre[n]

,f[n]

[n][n]

,ans;

intmain()

io.write

(f[1

][n][0

]);return0;

}

洛谷P2135 方塊消除

洛谷題目鏈結 動態規劃 真毒瘤!變數宣告 val i 表示第 i 塊顏色 num i 表示第 i 塊顏色數量 sum i 表示 num 的字首和 我們設計狀態 f l r k 表示區間 l,r 中,後面還有 k 個與 val r 相同的數字 那麼初始化如下 f l r k f l r 1 0 num...

題解 P1004 方格取數

傳送門 動態規劃yes?設i為路徑長度,為什麼i這一維可以省掉見下 f j k 表示第乙個點到了 j,i j 第二個點到了 k,j k 則int ji i j,ki i k f j k max f j k f j 1 k 1 f j k max f j k f j 1 k f j k max f j...

P2774 方格取數問題 題解

題目鏈結 這道題目解法很妙,主要用到了最大和 總和 最小捨棄和。最小捨棄和即最小割 我們構造出乙個二分圖滿足割掉 捨去 我們又知最小割 最大流,所以是一道最大流問題。考慮建圖 我們發現,只要兩個點相鄰 不相容 那麼這兩個點的橫縱座標和的奇偶性一定不同,即 x i y i bmod 2 neq x j...