BZOJ2431 逆序對數列(動態規劃)

2021-08-10 07:10:24 字數 999 閱讀 9229

對於乙個數列,如果有i<j且ai>aj,那麼我們稱ai與aj為一對逆序對數。若對於任意乙個由1~n自然數組成的數列,可以很容易求出有多少個逆序對數。那麼逆序對數為k的這樣自然數數列到底有多少個?

第一行為兩個整數n,k。

寫入乙個整數,表示符合條件的數列個數,由於這個數可能很大,你只需輸出該數對10000求餘數後的結果。

4 1考慮一下o(

n3)

設f[i

][j]

表示i 的排列中逆序對數為

j的數列個數

現在,如果新加乙個數i+

1 進來

他可以產生的貢獻可以是[0

,i]

因此,f[i

][j]

=sum

(f[i

−1][

j−k]

) 其中k

∈[0,

i−1]

但是這樣子會重複算很多相同的東西

導致複雜度變為o(

n3)

用乙個字首和記錄一下,可以做到o(

1)的轉移

從而複雜度變為了o(

n2)

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

#define mod 10000

inline

int read()

int n,k;

int f[1100][11000];

int s[11000];

int main()

printf("%d\n",f[n][k]);

return

0;}

BZOJ 2431 逆序對數列

time limit 5 sec memory limit 128 mb submit 2611 solved 1526 submit status discuss description 對於乙個數列,如果有i aj,那麼我們稱ai與aj為一對逆序對數。若對於任意乙個由1 n自然數組成的 數列,可...

BZOJ 2431 逆序對數列 DP

2431 haoi2009 逆序對數列 time limit 5 sec memory limit 128 mb description 對於乙個數列,如果有i j且ai aj,那麼我們稱ai與aj為一對逆序對數。若對於任意乙個由1 n自然數組成的數列,可以很容易求出有多少個逆序對數。那麼逆序對數為...

BZOJ2431 逆序對數列 KEY

題目傳送門 不知道今天是怎麼了,可能是空調吹多了吧,一直不在狀態,連遞推題我都做不來了 扎zn了老fe 然而,不管環境如何惡劣,我們仍要努力學習,為了自己的明天而奮鬥。說的好像跟真的一樣 其實這題就是乙個遞推,現在我們考慮第i個數,定義f i j 表示序列裡有i個數,逆序對的組數為j的方案數。因為第...