本題是一道多維dp題目,那麼在不開啟演算法標籤的情況下怎麼去想呢,
首先是題目的求的是最值,比較好想到的就是動態規劃。首先是本題的種植範圍限在一維,但是有種類要求,可以把高度10,20,30簡單理解為種類1,2,3(因為沒有其他奇奇怪怪的東西)。
我們需要一維記錄位置,二維記錄種類,而教主大人又有特殊審美,所以要對樹之間進行判斷,三維記錄前乙個樹的種類,而植樹場地又是乙個環,所以...再開一維特判1和n的種類,即記錄第一課樹的種類。所以...int f[100010][4][4][4],雖然是4維陣列但是後三維所需要記錄的量(種類)不多,所以相對較小,這種方法是可行的。可以列出轉移方程:
f[i][j][x][z]=max(f[i][j][x][z],f[i-1][x][y][z]+v[i][j]);
其中v[i][j]是記錄當前格可產生的觀賞價值。j,x,y,z都是種類。
**如下
#include#include#includeusing namespace std;
int f[100010][5][5][5];
int v[100010][5],maxx;
int main()}}
}}
for (int i=1;i<4;i++)
{for (int j=1;j<4;j++)
{for (int l=1;l<4;l++)
{if ((jl) || (j>i && i其實可以降維但是太懶了
P1133 教主的花園
教主有著乙個環形的花園,他想在花園周圍均勻地種上n棵樹,但是教主花園的土壤很特別,每個位置適合種的樹都不一樣,一些樹可能會因為不適合這個位置的土壤而損失觀賞價值。教主最喜歡3種樹,這3種樹的高度分別為10,20,30。教主希望這一圈樹種得有層次感,所以任何乙個位置的樹要比它相鄰的兩棵樹的高度都高或者...
洛谷 P1133 教主的花園
教主有著乙個環形的花園,他想在花園周圍均勻地種上n棵樹,但是教主花園的土壤很特別,每個位置適合種的樹都不一樣,一些樹可能會因為不適合這個位置的土壤而損失觀賞價值。教主最喜歡3種樹,這3種樹的高度分別為10,20,30。教主希望這一圈樹種得有層次感,所以任何乙個位置的樹要比它相鄰的兩棵樹的高度都高或者...
P1133 教主的花園 動態規劃
教主有著乙個環形的花園,他想在花園周圍均勻地種上n棵樹,但是教主花園的土壤很特別,每個位置適合種的樹都不一樣,一些樹可能會因為不適合這個位置的土壤而損失觀賞價值。教主最喜歡33種樹,這3種樹的高度分別為10,20,30。教主希望這一圈樹種得有層次感,所以任何乙個位置的樹要比它相鄰的兩棵樹的高度都高或...