題目描述
對於乙個數列,如果有i小於j且ai大於aj,那麼我們稱ai與aj為一對逆序對數。若對於任意乙個由1~n自然數組成的數列,可以很容易求出有多少個逆序對數。那麼逆序對數為k的這樣自然數數列到底有多少個?
輸入輸出格式
輸入格式:
第一行為兩個整數n,k。
輸出格式:
寫入乙個整數,表示符合條件的數列個數,由於這個數可能很大,你只需輸出該數對10000求餘數後的結果。
輸入輸出樣例
輸入樣例#1:
4 1輸出樣例#1: 3說明
樣例說明:
下列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個數,產生j個逆序對的方案數
我們考慮每一次的狀態,比如i=4,k=3
1後面加(2,3,4),k=3的方案數
(1和後面的數不能組成逆序對,這就要求(2,3,4)之間組成3對逆序對)
2後面加(1,3,4),k=2的方案數
(2和後面的數能組成1對逆序對,這就要求(1,3,4)之間組成2對逆序對)
3後面加(1,2,4),k=1的方案數
(3和後面的數能組成2對逆序對,這就要求(1,2,4)之間組成1對逆序對)
4後面加(1,2,3),k=0的方案數
(4和後面的數能組成3對逆序對,這就要求(1,2,3)之間組成0對逆序對)
i=5 k=3
1 (2,3,4,5) k=3;
2 (1,3,4,5) k=2;
3 (1,2,4,5) k=1;
4 (1,2,3,5) k=0; 、
這裡寫**片
#include
#include
#include
using
namespace
std;
const
int mod=10000;
int f[1010][1010];
int n,m;
int main()
printf("%d",f[n][m]);
return
0;}
P2513 HAOI2009 逆序對數列
題目描述 對於乙個數列,如果有iaj,那麼我們稱ai與aj為一對逆序對數。若對於任意乙個由1 n自然數組成的數列,可以很容易求出有多少個逆序對數。那麼逆序對數為k的這樣自然數數列到底有多少個?錯誤日誌 沒想対,菜是原罪,最近狀態不佳 在一段 1 i 1 的排列中加入 i 你可以控制 i 插入的位置,...
P2513 HAOI2009 逆序對數列
對於乙個數列,如果有iaj,那麼我們稱ai與aj為一對逆序對數。若對於任意乙個由1 n自然數組成的數列,可以很容易求出有多少個逆序對數。那麼逆序對數為k的這樣自然數數列到底有多少個?輸入格式 第一行為兩個整數n,k。輸出格式 寫入乙個整數,表示符合條件的數列個數,由於這個數可能很大,你只需輸出該數對...
P2513 HAOI2009 逆序對數列
對於乙個數列,如果有iaj,那麼我們稱ai與aj為一對逆序對數。若對於任意乙個由1 n自然數組成的數列,可以很容易求出有多少個逆序對數。那麼逆序對數為k的這樣自然數數列到底有多少個?輸入格式 第一行為兩個整數n,k。輸出格式 寫入乙個整數,表示符合條件的數列個數,由於這個數可能很大,你只需輸出該數對...