洛谷 P1866:编号 ← 排序
【题目来源】
【题目描述】
太郎有 N 只兔子,现在为了方便识别它们,太郎要给他们编号。兔子们向太郎表达了它们对号码的喜好,每个兔子 i 想要一个整数,介于 1 和 Mi 之间(可以为 1 或 Mi)。当然,每个兔子的编号是不同的。现在太郎想知道一共有多少种编号的方法。你只用输出答案对 10^9+7 取余的结果即可。如果这是不可能的,就输出 0。
【输入格式】
第一行是一个整数 N。
第二行 N 个整数 Mi。
【输出格式】
一个整数,表示方案总数。
【输入样例】
2
5 8
【输出样例】
35
【数据范围】
对于全部数据,1≤N≤50,1≤Mi≤1000。
【算法分析】
设已将所有兔子的编号上限升序排序。分配到第 i 只兔子时,前 i-1 只兔子已经占用了 i-1 个互不重复的数字,而该兔子仅能选取 1~v[i] 内的数,因此合法可选编号的数量为 v[i]-(i-1),记作 cnt = v[i] - (i-1)。
【算法代码】
【参考文献】

浙公网安备 33010602011771号