K元上升子序列
时间限制:0.5秒 内存限制:256M
【题目描述】
求最长上升子序列的问题已经相当普及,本题希望你求解长度为 \(K\) 的上升子序列的个数。只要有序元组中有一个元素的在原序列中的位置不同,就是不同的元组。比如序列:\(a_1=1,a_2=3,a_3=0,a_4=3,a_5=4\) 中 \(a_1,a_2,a_4\) 和 \(a_1,a_4,a_5\),虽然它们都是 [1,3,4],但是算着两个不同答案。
【输入格式】
第一行包含两个整数:\(N\) 和 \(K\),\(N\) 表示序列长度,\(K\) 的意义如题目描述。
第二行包含 \(N\) 个用空格分隔的整数,依次表示 \(a_1,a_2,…,a_n\)。
【输出格式】
输出一个整数,表示 \(K\) 元上升子序列的数目。由于这个值很大,你只需输出其模 \(10^9+7\) 的结果。
【输入输出样例】
Input
6 3
2 1 3 0 3 4
Output
5
【数据限制】
对于 \(40\%\) 的数据满足:\(1≤N≤1000\)。
对于 \(80\%\) 的数据满足:\(1≤N≤20000,0≤a[i]≤10^6\)。
对于 \(100\%\) 的数据满足:\(1≤N≤20000,1≤K≤100,0≤a[i]≤10^9\)。
【来源】
Mr.he