對於乙個數列,如果有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的方案數。因為第...