bzoj2431 HAOI2009 逆序對數列

2021-07-09 04:22:25 字數 576 閱讀 3123

天哪天哪天哪

我們用f[i][j]來表示前i個數,有j對逆序對的方案數,so考慮插入,因為i比1到i-1裡面的任何乙個數都要大,所以插入的時候後面有多少個數,就會多出多少逆序對,所以前面的符合條件的都可以轉移,f[i][j]=sigma(f[i-1][j-k]),k屬於0到i-1,然而字首和神煩.

#include#include#include#include#include#include#define ll long long

#define fo(i,a,b) for(int i=a;i<=b;i++)

using namespace std;

#define n 1005

#define inf 10000

int f[n][n],s[n][n];

int n,m;

int main()

if(j)s[i][j]=s[i][j-1];

s[i][j]+=f[i][j];

s[i][j]%=inf;

// s[i][j]=f[i][j];else s[i][j]=s[i][j-1]+f[i][j];

} }cout<

bzoj2431 HAOI2009 逆序對數列

對於乙個數列,如果有ii aj,那麼我們稱ai與aj為一對逆序對數。若對於任意乙個由1 n自然數組成的數列,可以很容易求出有多少個逆序對數。那麼逆序對數為k的這樣自然數數列到底有多少個?第一行為兩個整數n,k。寫入乙個整數,表示符合條件的數列個數,由於這個數可能很大,你只需輸出該數對10000求餘數...

bzoj2431 HAOI2009 逆序對數列

dp 令b i j 表示n i,k j時的答案 則b 1 0 1 b 2 0 1 b 2 1 1 b 3 0 1 b 3 1 2 b 3 2 2 b 3 3 1 我們觀察發現 至少我是觀察 b i j b i 1 j i 1 b i 1 j 注意j i 1 0時令其為0 j i 1 i 2 2,即j...

BZOJ2431 HAOI2009 逆序對數列

對於乙個數列,如果有ii aj,那麼我們稱ai與aj為一對逆序對數。若對於任意乙個由1 n自然數組成的數列,可以很容易求出有多少個逆序對數。那麼逆序對數為k的這樣自然數數列到底有多少個?第一行為兩個整數n,k。寫入乙個整數,表示符合條件的數列個數,由於這個數可能很大,你只需輸出該數對10000求餘數...