dp 洛谷P1133 教主的花園

2021-08-01 16:05:42 字數 566 閱讀 1985

一開始題目看錯了,以為很水的;

然後0=爆蛋之後開始想標算;

想了半天就是不知道怎麼處理這個環;

設f[i][j][k]

表示第i行第j列的答案;

k=0表示前面比他小;

k=1表示前面比他大;

但是這樣我們第一位要靠第n位來更新;

那我們直接不更新第一位;

從第二位來,然後跑完後把n位和1位結合一下就好了;

#include

using

namespace

std;

int f[100005][4][2],a[100005][4];

int ans,n;

int main()

for(int j=1;j<=3;j++)

for(int k=1;k<=3;k++)

if(j>k)ans=max(ans,a[1][j]+f[n][k][1]);else

if(j1][j]+f[n][k][0]);

printf("%d",ans);

}

洛谷 P1133 教主的花園

教主有著乙個環形的花園,他想在花園周圍均勻地種上n棵樹,但是教主花園的土壤很特別,每個位置適合種的樹都不一樣,一些樹可能會因為不適合這個位置的土壤而損失觀賞價值。教主最喜歡3種樹,這3種樹的高度分別為10,20,30。教主希望這一圈樹種得有層次感,所以任何乙個位置的樹要比它相鄰的兩棵樹的高度都高或者...

洛谷 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且高度比...