題目描述
一天,小魂正和乙個數列玩得不亦樂乎。
小魂的數列一共有n個元素,第i個數為ai。
他發現,這個數列的一些子串行中的元素是嚴格遞增的。
他想知道,這個數列一共有多少個長度為k的子串行是嚴格遞增的。
請你幫幫他,答案對998244353取模。
對於100%的資料,1≤ n ≤ 500,000,2≤ k ≤ 10,1≤ ai ≤ 109。
輸入描述:
第一行包含兩個整數n,k,表示數列元素的個數和子串行的長度。
第二行包含n個整數,表示小魂的數列。
輸出描述:
一行乙個整數,表示長度為k的嚴格遞增子串行的個數對998244353取模的值。
示例1輸入
複製5 3
2 3 3 5 1
輸出複製2說明
兩個子串行分別是2 3 3 5 1和2 3 3 5 1。
沒什麼思維,用bit維護過lis的應該都會。看到k這麼小,很明顯,直接遞推咯。
從前往後,維護k個bit,每乙個維護的就是當前長度為k的個數,然後每個都可以從k-1遞推得到。
每次統計一下答案即可。
別忘了bit裡面也需要取模。
ac**:
#include
#define int long long
using namespace std;
const
int p=
998244353
;const
int n=
5e5+10;
int d[n][15
],n,k,a[n]
,m,res;
vector<
int> v;
inline
void
add(
int x,
int v,
int k)
inline
intask
(int x,
int k)
signed
main()
cout<'\n'
;return0;
}
牛客練習賽56 小魂和他的數列
題目鏈結 給出乙個數列,讓求長度為k的嚴格遞增子串行有多少個 怎麼做呢?顯然dp 這個是很好想的 for int i 1 i n i for int i 2 i m i 這個dp顯然tle 所以 當時沒有做出來。做到這裡不會做了。想不到怎麼優化。顯然在最裡面的那個迴圈的作用是字首和 小於a i 的位...
小D和他的魔法石
我們發現題目的關鍵是魔法樹可以生產無限魔法石,所以如果我們想讓魔力最多的話,我們可以選中乙個抗力最小但是魔力最大的一直吸,由於我們必須把交換次數全部用光,但是我們觀察資料範圍,考慮特殊情況,我們發現有可能不能通過交換使得抗力最小的和魔力最大的到一塊,當n為2的時候,每次只能左右交換,當k為0的時候,...
小奇的數列
題目 背景 小奇總是在數學課上思考奇怪的問題。問題描述 給定乙個長度為 n 的數列,以及 m 次詢問,每次給出三個數 l,r 和 p,詢問 a l a l 1 a r mod p 的最小值。其中 l l r r。即模意義下的區間子串和最小值。輸入格式 第一行包含兩個正整數 n 和 m,表示數列的長度...