Description
Input
第1行包括两个正整数N,K,表示了棋盘的列数和放的车数。
第2行包含N个正整数,表示了棋盘每列的高度。
Output
包括一个非负整数,表示有多少种放置的方案,输出答案mod
1000000007后的结果即可。
Sample Input
5 2
2 3 1 2 4
Sample Output
43
HINT
对于100%的数据,有 N≤500,K≤500,h[i] ≤1000000。
Source
感谢CA爷提供的zky的代码
妈呀这是树形DP
从下往上看 按行划分,显示出一个树的结构。这样每个节点代表一个完整的矩形,它上面分出来的矩形是它的儿子。
每个节点有它的行与列。dp[u][i]表示u的子树中放i个车的方案数。则转移是这样:
dp[u][i]=∑dp[son][i−k]∗calc(u,k)