有乙個長為n的序列(由1,2,3,……n組成),問經過某種調整之後,有k個逆序對(即在前面的乙個數大於後面的乙個數這樣的對)的種數,有多組資料,以0 0結尾
3 0
3 13 2
3 34 2
4 10
13 23
18 80
0 0
122
15046936280
184348859235088
1 <= 資料組數 <=100, 1 <= n <= 50, 0 <= k <= 1500。
首先設f[i
][j]
f[i][j]
f[i][j
]為前i
ii個字元有j
jj對逆序對的種數,然後因為插入的地方不同,且不同地方增加的逆序對也不同,所以得出:f[i
][j]
=∑k=
0min
(i−1
,j)f
[i−1
][j−
k]
f[i][j]=\sum_^f[i-1][j-k]
f[i][j
]=k=
0∑mi
n(i−
1,j)
f[i
−1][
j−k]
注:取min值是因為當k
kk大於j
jj時j−k
j-kj−
k會小於0
其次看到樣例,我們可以發現資料是十分大的,所以要用高精,因為時間記憶體的限制,所以我們要壓位
#include
#define min(x,y) (x)<(y)?(x):(y)
using
namespace std;
int x,y,f[51]
[1501][
11];int
main()
scanf
("%d %d"
,&x,
&y);
while
(x!=
0||y!=0)
return0;
}
JZOJ DP 高精 逆序對
有個數123 他是按順序排的 後面的比前面的大 而312 它被打亂了 也就出現了後面的比前面的 也就是這個數的第i位和第j位 i i j a i a j a i a j a i a j 這樣的稱為逆序對 123的逆序對為0 312的逆序對為2 3,2 和 3,1 在1,2,3 n的排列中,有k對逆序...
乘積最大 DP (非高精版)
題目描述 今年是國際數學聯盟確定的 2000 世界數學年 又恰逢我國著名數學家華羅庚先生誕辰90周年。在華羅庚先生的家鄉江蘇金壇,組織了一場別開生面的數學智力競賽的活動,你的乙個好朋友xz也有幸得以參加。活動中,主持人給所有參加活動的選手出了這樣一道題目 設有乙個長度為n的數字串,要求選手使用k個乘...
洛谷1005 矩陣取數遊戲(dp 高精)
題目描述 description 帥帥經常跟同學玩乙個矩陣取數遊戲 對於乙個給定的n m的矩陣,矩陣中的每個元素aij均為非負整數。遊戲規則如下 1.每次取數時須從每行各取走乙個元素,共n個。m次後取完矩陣所有元素 2.每次取走的各個元素只能是該元素所在行的行首或行尾 3.每次取數都有乙個得分值,為...