dp種樹的藝術

2021-10-07 02:59:05 字數 1130 閱讀 3471

題目描述

有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 == idp[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位畫家使用的顏色是不同的,這裡我們可以假設第一位畫家...