題解 LuoGu1133 教主的花園

2021-09-26 07:04:05 字數 995 閱讀 6356

原題傳送門

顯然的dp

設計狀態dpi

,j,k

dp_dp

i,j,

k​表示第i

ii棵樹,種了高度為10

j10j

10j的樹,高度關係是k(0

/1

)k(0/1)

k(0/1)

,0表示比兩邊低,1表示比兩邊高

轉移方程dpi

,j,k

=max

(dpi

−1,j

j,kx

or1+

ai,j

)dp_=max(dp_+a_)

dpi,j,

k​=m

ax(d

pi−1

,jj,

kxor

1​+a

i,j​

)但是處理n與1相鄰的情況,需要再跑一遍1的狀態

code:

#include

#define maxn 100010

#define ll long long

using

namespace std;

int n, a[maxn][4

], dp[maxn][4

][2]

;inline

intread()

intmain()

for(

int j =

1; j <=3;

++j)

int ans =0;

for(

int j =

1; j <=3;

++j) ans =

max(ans,

max(dp[1]

[j][0]

, dp[1]

[j][1]

));printf

("%d\n"

, ans)

;return0;

}

洛谷 P1133 教主的花園 題解

通往題目的大門 進入正題,需要求最大觀賞價值,那麼用於dp的f陣列首先肯定要有兩維,第一維i表示第i個位置,第二維j表示種第j種樹 我們不妨設10,20,30這三種樹為1,2,3 然後又發現,第i個位置能種什麼樹,不單單跟上乙個位置有關,還跟上上個位置有關,那這樣呼叫兩位去dp顯得十分複雜,於是我們...

洛谷 題解 P1133 教主的花園

n 10 5 o n 演算法 dp i j k 表示在第i個位置,種j 10的高度的樹,且這棵樹是否比相鄰兩棵樹高dp i 1 0 max dp i 1 2 1 dp i 1 3 1 a i 種高度為10的樹,肯定比相鄰的兩棵樹矮 dp i 2 0 dp i 1 3 1 b i 種高度為20且高度比...

P1133教主的花園

本題是一道多維dp題目,那麼在不開啟演算法標籤的情況下怎麼去想呢,首先是題目的求的是最值,比較好想到的就是動態規劃。首先是本題的種植範圍限在一維,但是有種類要求,可以把高度10,20,30簡單理解為種類1,2,3 因為沒有其他奇奇怪怪的東西 我們需要一維記錄位置,二維記錄種類,而教主大人又有特殊審美...