#aBC209F. [ABC209F] Deforestation
[ABC209F] Deforestation
AT_abc209_f [ABC209F] Deforestation
题目描述
有 棵树从左到右排成一列,从左起第 棵树的高度为 。
你可以以任意顺序将这 棵树全部砍倒。具体来说,对于通过排列 得到的某个排列 ,依次按照 的顺序:
- 先支付 的代价,然后将第 棵树砍倒,即将 变为 。
这里规定 。
换句话说,砍倒某棵树所需的代价,是在砍倒前该树及其相邻两棵树的高度之和。
请你求出,使得支付的总代价最小的排列 的个数。由于答案可能非常大,请输出对 取模后的结果。
输入格式
输入以如下格式从标准输入读入:
输出格式
输出使得总代价最小的排列 的个数,对 取模后的结果。
输入输出样例 #1
输入 #1
3
4 2 4
输出 #1
2
输入输出样例 #2
输入 #2
3
100 100 100
输出 #2
6
输入输出样例 #3
输入 #3
15
804289384 846930887 681692778 714636916 957747794 424238336 719885387 649760493 596516650 189641422 25202363 350490028 783368691 102520060 44897764
输出 #3
54537651
说明/提示
限制条件
- 输入均为整数
样例解释 1
使总代价最小的排列 有 和 共 种。以下是砍树的示例:
当 时:
- 首先砍倒第 棵树,此时支付的代价为 。
- 接着砍倒第 棵树,此时支付的代价为 。
- 最后砍倒第 棵树,此时支付的代价为 。 总代价为 。
样例解释 3
请注意要输出对 取模后的结果。
由 ChatGPT 4.1 翻译