小魂和他的數列

2021-10-01 18:42:02 字數 1082 閱讀 1988

題目描述

一天,小魂正和乙個數列玩得不亦樂乎。

小魂的數列一共有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,表示數列的長度...