JZOJ DP 高精 逆序對

2021-09-25 01:49:43 字數 1387 閱讀 1849

有個數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對逆序對

有多少種排列的方法

有多個資料,每行兩個數,n與k

最後以0 0結尾

多行,每行乙個數,為方案

s am

plei

nput

sample input

sample

inpu

t

3 0

3 13 2

3 34 2

4 10

13 23

18 80

0 0

s am

pleo

utpu

tsample output

sample

outp

ut

122	

15046936280

184348859235088

dp

設f [i

][j]

f[i][j]

f[i][j

]為有i位數j個逆序對的數的排列方案

動態轉移方程:

例如312

加一位4

原本逆序對有2對

如果加到最前面第一位(4312)

那就對了三對

加到第二位(3412)

那就多了兩對

注意:要用高精壓位

#include

#include

#include

#define inf 1000000000

using

namespace std;

int f[55]

[2250][

10];int n,m;

void

add(

int*a,

int*b)

return;}

void

write

(int

*a)printf

("\n");

return;}

intmain()

return0;

}

DP 高精 逆序對(jzoj 2014)

有乙個長為n的序列 由1,2,3,n組成 問經過某種調整之後,有k個逆序對 即在前面的乙個數大於後面的乙個數這樣的對 的種數,有多組資料,以0 0結尾 3 0 3 13 2 3 34 2 4 10 13 23 18 80 0 0122 15046936280 1843488592350881 資料組...

c 高精除以高精

include using namespace std int a 1000 b 1000 int len1,len2,len int index int re 1000 p 0 記錄結果 intjudge return0 int main for i 0 isize i len1 n.size l...

高精加 高精乘

高精度演算法是每個初學者的入門必備,在我們做題目的時候,總會遇到一下精度太高的問題,即使用了long long也遠遠不夠。所以學習高精度也是很有必要的。本篇文章就以下面這道題為例子,簡單介紹一下高精加和高精乘。洛谷原題 洛谷部落格題解 本蒟的思路就是高精乘 高精加,就是把高精乘的模板套上去接著套高精...