P1133 教主的花園(多維dp)

2021-10-01 21:24:29 字數 473 閱讀 1910

思路:從題目中可知,有三種型別的狀態

(1)1~n棵樹

(2)每個位置上可能有3種不同的高度

(3)可能是高於兩邊,可能低於兩邊

所以分類討論狀態就可以了,但是要注意,我們不知道第乙個位置是什麼,所以可以假設第乙個位置的高度,

列舉每種情況求出最大值就好了。

**:

#include using namespace std;

const int n = 1e5+10;

int a[n][3] = ,dp[n][3][2] = ,n;

int main(void)

//這裡一定要考慮周全

for(int i=0; ifor(int i=k+1; i<3; i++) ans = max(ans,dp[n][i][1]);

}printf("%d\n",ans);

return 0;

}

P1133教主的花園

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

P1133 教主的花園

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

dp 洛谷P1133 教主的花園

一開始題目看錯了,以為很水的 然後0 爆蛋之後開始想標算 想了半天就是不知道怎麼處理這個環 設f i j k 表示第i行第j列的答案 k 0表示前面比他小 k 1表示前面比他大 但是這樣我們第一位要靠第n位來更新 那我們直接不更新第一位 從第二位來,然後跑完後把n位和1位結合一下就好了 includ...