給定乙個序列 (a_1, a_2, …, a_n), 它的乙個上公升子串行是指從序列中取出一些元素,按照原來的順序排列後,是單調遞增的序列。
例如,對於序列 (3, 2, 7, 6, 7),取出下標為 2, 4, 5 的元素 a_2, a_4, a_5,即 2, 6, 7,是乙個上公升子串行。
在這個序列中,有 7 個長度為 2 的上公升子串行,例如
下標 1, 3 對應的 3, 7;
2. 下標 1, 4 對應的 3, 6;
3. 下標 1, 5 對應的 3, 7;
4. 下標 2, 3 對應的 2, 7;
5. 下標 2, 4 對應的 2, 6;
6. 下標 2, 5 對應的 2, 7;
7. 下標 4, 5 對應的 6, 7。
注意,可能有下標不同但對應數值相同的上公升子串行,他們應當算成不同的上公升子串行。
給定序列,請問序列中一共有多少個長度為 k 的上公升子串行。
輸入格式
輸入第一行包含兩個整數 n, k,表示序列的長度和上公升子串行的長度。
第二行包含 n 個整數 a_1, a_2, …, a_n,表示給定的序列。
輸出格式
輸出一行,包含乙個整數,表示長度為 k 的上公升子串行的數量,答案可能很大,請輸出答案除以 1000007 的餘數。
樣例輸入
5 23 2 7 6 7
樣例輸出
7資料規模和約定
對於 30% 的評測用例,1 <= n <= 20, 0 <= a_i <= 100。
對於 50% 的評測用例,1 <= n <= 100, 0 <= a_i <= 1000。
對於所有評測用例,1 <= n <= 1000, 1 <= k <= 10, 0 <= a_i <= 10000。
#include
using
namespace std;
#include
const
int n =
1010
;int n , k , a[n]
;int dp[n]
[n];
// dp[i][j]以i結尾 長度為 j的 上公升子串行數量
intmain()
}}int ans =0;
for(
int i =
1; i <= n ; i++
) cout
}
acwing社群:acwing.895,11屆藍橋杯c++b組國賽第4題,需要的我私聊發你 第五屆藍橋杯校內選拔賽
輸入乙個字串,求它包含多少個單詞。單詞間以乙個或者多個空格分開。第乙個單詞前,最後乙個單詞後也可能有0到多個空格。比如 abc xyz 包含兩個單詞,ab c xyz 包含3個單詞。如下的程式解決了這個問題,請填寫劃線部分缺失的 注意 只填寫劃線部分的 不要填寫任何多餘的內容。比如已經存在的小括號,...
第五屆藍橋杯校內選拔賽 1
輸入乙個字串,求它包含多少個單詞。單詞間以乙個或者多個空格分開。第乙個單詞前,最後乙個單詞後也可能有0到多個空格。比如 abc xyz 包含兩個單詞,ab c xyz 包含3個單詞。如下的程式解決了這個問題,請填寫劃線部分缺失的 注意 只填寫劃線部分的 不要填寫任何多餘的內容。比如已經存在的小括號,...
第五屆藍橋杯校內選拔賽 4
今有7對數字 兩個1,兩個2,兩個3,兩個7,把它們排成一行。要求,兩個1間有1個其它數字,兩個2間有2個其它數字,以此類推,兩個7之間有7個其它數字。如下就是乙個符合要求的排列 17126425374635 當然,如果把它倒過來,也是符合要求的。請你找出另一種符合要求的排列法,並且這個排列法是以7...