分析:記dp[n][k]為n個數,逆序數為k的個數,將dp[n][k]分為兩部分,一部分有1~n-1的逆序構成,一類是有n的逆序,可以得到dp[n+1][k+1]=(max(0,k+1-n),min(k+1,n*(n-1)/2)∑dp[n][i],再用dp[n+1][k+1]與dp[n+1][k]做差,討論一下k和n的關係就可以寫出遞推式了.
1 #include2using
namespace
std;
3const
int maxn=1005,maxk=20005,p=1e9+7;4
intdp[maxn][maxk];
5int
main()18}
19int
t,n,k;
20 cin>>t;
21while(t--)
25return0;
26 }
51nod 1020 逆序排列
原題鏈結 1020 逆序排列 基準時間限制 2 秒 空間限制 131072 kb 分值 80 難度 5級演算法題 在乙個排列中,如果一對數的前後位置與大小順序相反,即前面的數大於後面的數,那麼它們就稱為乙個逆序。乙個排列中逆序的總數就稱為這個排列的逆序數。如2 4 3 1中,2 1,4 3,4 1,...
51nod 1020 逆序排列
1020 逆序排列 基準時間限制 2 秒 空間限制 131072 kb 分值 80 難度 5級演算法題 在乙個排列中,如果一對數的前後位置與大小順序相反,即前面的數大於後面的數,那麼它們就稱為乙個逆序。乙個排列中逆序的總數就稱為這個排列的逆序數。如2 4 3 1中,2 1,4 3,4 1,3 1是逆...
51Nod1020 逆序排列
在乙個排列中,如果一對數的前後位置與大小順序相反,即前面的數大於後面的數,那麼它們就稱為乙個逆序。乙個排列中逆序的總數就稱為這個排列的逆序數。如2 4 3 1中,2 1,4 3,4 1,3 1是逆序,逆序數是4。1 n的全排列中,逆序數最小為0 正序 最大為n n 1 2 倒序 給出2個數n和k,求...