教主的花園

2022-09-08 03:54:09 字數 1325 閱讀 2211

教主有著乙個環形的花園,他想在花園周圍均勻地種上n棵樹,但是教主花園的土壤很特別,每個位置適合種的樹都不一樣,一些樹可能會因為不適合這個位置的土壤而損失觀賞價值。

教主最喜歡33種樹,這3種樹的高度分別為10,20,3010,20,30。教主希望這一圈樹種得有層次感,所以任何乙個位置的樹要比它相鄰的兩棵樹的高度都高或者都低,並且在此條件下,教主想要你設計出一套方案,使得觀賞價值之和最高。

第一行為乙個正整數nn,表示需要種的樹的棵樹。

接下來nn行,每行33個不超過1000010000的正整數a_i,b_i,c_iai​,bi​,ci​,按順時針順序表示了第ii個位置種高度為10,20,3010,20,30的樹能獲得的觀賞價值。

第ii個位置的樹與第i+1i+1個位置的樹相鄰,特別地,第11個位置的樹與第nn個位置的樹相鄰。

乙個正整數,為最大的觀賞價值和。

輸入 #1複製

4 

1 3 2

3 1 2

3 1 2

3 1 2

輸出 #1複製

11

【樣例說明】

第11至nn個位置分別種上高度為20,10,30,1020,10,30,10的樹,價值最高。

【資料規模與約定】

對於20\%20%的資料,有n≤10n≤10;

對於40\%40%的資料,有n≤100n≤100;

對於60\%60%的資料,有n≤1000n≤1000;

對於100\%100%的資料,有4≤n≤1000004≤n≤100000,並保證nn一定為偶數。

感悟「把教主打死,亂砍亂種

令f[i][j][k][first]為在第i個位置,本位置選了第j種樹,前乙個位置選第k種樹,第一棵樹種的是first時的最大觀賞值!

f[i][j][k][first]=(所有y>kj) max(f[i-1][k][y][first]+v[i][j]) !

然後特殊判斷(n-1)位置、n位置、1位置是否滿足!

#include#include

using

namespace

std;

int f[100010][4][4][4

];int v[100010][4

];int i,j,x,y,z,p,l,maxv=0

;int

main()

for(i=1;i<4;i++)

}for(i=1;i)}}

}}

}for(j=1;j<4;j++)}}

}printf("%d

",maxv);

return0;

}

教主的花園

lhx教主最近總困擾於前來膜拜他的人太多了,所以他給他的花園加上了一道屏障。可以把教主的花園附近區域抽像成乙個正方形網格組成的網路,每個網格都對應了乙個座標 均為整數,有可能為負 若兩個網格 x1,y1 x2,y2 有 x1 x2 y1 y2 1,則說這兩個網格是相鄰的,否則不是相鄰的。教主在y 0...

JZOJ 1406 教主的花園

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

P1133教主的花園

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