2431: [haoi2009]逆序對數列
time limit: 5 sec memory limit: 128 mb
description
對於乙個數列,如果有i< j且ai>aj,那麼我們稱ai與aj為一對逆序對數。若對於任意乙個由1~n自然數組成的數列,可以很容易求出有多少個逆序對數。那麼逆序對數為k的這樣自然數數列到底有多少個?
input
第一行為兩個整數n,k。
output
寫入乙個整數,表示符合條件的數列個數,由於這個數可能很大,你只需輸出該數對10000求餘數後的結果。
sample input
樣例輸入
4 1sample output
樣例輸出
樣例說明:
下列3個數列逆序對數都為1;分別是1 2 4 3 ;1 3 2 4 ;2 1 3 4;
測試資料範圍
30%的資料 n<=12
100%的資料 n<=1000,k<=1000
思路:
赤裸裸的dp題,(呃除了狀態轉移方程想不出來)
f[i][j] i表示前i個數,j表示有j個逆序對 從小往大插,當從i-1個數的排列中插入第i個數的時候,逆序對的個數增加值等於插入位置後面小於i的數的個數,即為插入位置後面的數字的個數,也就是【0~i-1】。
轉移方程:f[i][j]=∑f[i-1][j-k]
字首和可以優化到o(n^2)
優化之前的(這題不報tle,只報wa,,,,,,,,,,,,)
// by sirius_ren
#include
using
namespace
std;
int n,m,f[1002][1002],sum[1002];
int main()
加了個字首和之後的。。
// by sirius_ren
#include
using
namespace
std;
int n,m,f[1002][1002],sum[1002];
int main()
printf("%d",f[n][m]);
}
BZOJ 2431 逆序對數列
time limit 5 sec memory limit 128 mb submit 2611 solved 1526 submit status discuss description 對於乙個數列,如果有i aj,那麼我們稱ai與aj為一對逆序對數。若對於任意乙個由1 n自然數組成的 數列,可...
BZOJ2431 逆序對數列 KEY
題目傳送門 不知道今天是怎麼了,可能是空調吹多了吧,一直不在狀態,連遞推題我都做不來了 扎zn了老fe 然而,不管環境如何惡劣,我們仍要努力學習,為了自己的明天而奮鬥。說的好像跟真的一樣 其實這題就是乙個遞推,現在我們考慮第i個數,定義f i j 表示序列裡有i個數,逆序對的組數為j的方案數。因為第...
BZOJ2431 逆序對數列(動態規劃)
對於乙個數列,如果有i j且ai aj,那麼我們稱ai與aj為一對逆序對數。若對於任意乙個由1 n自然數組成的數列,可以很容易求出有多少個逆序對數。那麼逆序對數為k的這樣自然數數列到底有多少個?第一行為兩個整數n,k。寫入乙個整數,表示符合條件的數列個數,由於這個數可能很大,你只需輸出該數對1000...