題目描述
有n棵高度不一樣的樹要種成一行,為了讓種樹更加有藝術性,制定乙個種樹規則,希望從左邊看過去只能看到l棵樹,從右邊看過去只能看到r棵樹,請問有多少種不同的種樹方案。
輸入格式
輸入包含多組資料。
首先第一行包含乙個整數t,表示資料的組數。
之後t行,每行包含三個數n,l,r,以空格隔開,表示樹的棵數n以及從左邊看過去的棵數l和從右邊看過去的棵數r。
輸出格式
共t行,每行乙個數,表示每組資料所對應的種樹的方案數。答案可能很大,請對 998244353取模。
樣例樣例輸入2
4 1 2
4 2 1
樣例輸出2
2設dp[i][j][k]表示前i棵樹左邊看過去能看到j棵,右邊看過去能看到k棵。
考慮最低的樹,有三種情況:
1:放在最左邊,拿走後只影響左看右
2:放在最右邊,拿走之後只影響右看左
3:放在中間都不影響,有i-2種放法
所以dp[i][j][k]=dp[i-1][j][k-1]+dp[i-1][j-1][k]+dp[i-1][j][k]*(i-1)
其中 當j == i || k == i時dp[i][j][k]=1
#include
#include
#include
#include
#include
#include
#include
using namespace std;
const
int m=
205,mod=
998244353
;int n,l,r,t;
long
long dp[m]
[m][m]
;int
main()
while
(t--
)return0;
}
其實可以兩層迴圈,但我不會,在網上也沒找到。 種樹的藝術題解
1.狀態 通過讀題我們不難得出狀態 dp i j k 表示i個樹左邊看有j個右邊看有k個 我也只想出了這個 2.狀態轉移方程 假設把最小的乙個樹 應為假設最小的一棵樹方便分析,若假設其他的會有奇奇怪怪的事情 放在最左邊則是前i 1棵樹左邊看到j 1右邊看到k棵的方案 同理若放在最右邊則是前i 1棵樹...
計數DP 種樹
題目描述 事實上,小x邀請兩位奆老來的目的遠不止是玩鬥地主,主要是為了抓來苦力,替他的後花園種樹 小x的後花園是環形的,他想在花園周圍均勻地種上n棵樹,但是奆老花園的土壤當然非同尋常,每個位置適合種的樹都不一樣,一些樹可能會因為不適合這個位置的土壤而損失觀賞價值。小x最喜歡3種樹,這3種樹的高度分別...
藝術聯合社(dp)
這個是校賽的時候的一道題目,過了那麼久了才做出來orz.time limit 1000ms memory limit 65536k 有疑問?點這裡 藝術聯合會顧名思義就是n個畫家用n種顏色一起進行藝術創作 作畫 每一位畫家僅使用一種顏色,並且規定n位畫家使用的顏色是不同的,這裡我們可以假設第一位畫家...