lcez校內模擬賽 小R與蘋果派 題解

2022-04-12 02:02:23 字數 1898 閱讀 3688

題目傳送

首先對兩個陣列排序。

然後預處理出陣列p[i]表示b[x]然後我們設f[i][k]表示對於前i個派,我單獨選出來k組a[y]>b[y]。(即此時有k組a>b的匹配,其餘還未匹配)

顯然f[i][k]=f[i-1][k]+f[i-1][k-1]*(p[i]-(k-1))。等號右邊的第一項相當於考慮a[i]不分配b,第二項相當於a[i]分配b。

這裡還要注意一下f[0][0]=f[1][0]=f[2][0]=...=ff[n][0]=1的邊界條件。

但是這個陣列肯定不是答案。因為這裡f[i][k]中保證了只考慮到a的前i個,b的所有位置,並且滿足只給a>b的k個a分配了b, 其餘a和b沒有配對。

我們可以再設g[i]表示對於前n個派,恰好有i組a[x]>b[x]的方案數。

借助容斥原理思考一番後,可得轉移方程:

g[i]=f[n][i]*(n-i)!-  g[j]*c(j,i)   (i+1<=j<=n,c是組合數)。

這裡等號右邊的第一項相當於只分配了b的i個a的方案數*沒分配b的(n-i)個a分配b的方案數(階乘項)。這是是所有a>b的匹配對數》=i對的方案數,但注意這裡可能會出現同一種分配多次出現的情況(比如3個位置,1、2分配了1、2  ,  3對應3;1、3分配了1、3  ,  2對應2),所以要減掉的g[j]還要乘上個組合數來減掉重複出現的方案數。

考慮最終答案是什麼。「a 做的蘋果派比 b 做的蘋果派美味的天數比 b 做的比 a 做的美味的天數恰好多 k。」設a 做的蘋果派比 b 做的蘋果派美味的天數為x, b 做的比 a 做的美味的天數為y。則有方程組:

x+y=n;

x-y=k;

解得x=(n+k)/2

由此知道的答案即為g[(n+k)/2],同時知道當(n+k)為奇數時是無解的。

1 #include2 #include3 #include4

5using

namespace

std;67

const

int n=2005;8

9 typedef long

long

ll;10

11const ll mod=1e9+9;12

13int

n,k,a[n],b[n],p[n],s;

1415

ll jc[n],f[n][n],g[n],c[n][n];

1617

char

ch;18

19 inline int

read()

2029

30 inline void

init()

3142}43

44int

main()

4556 s=(n+k)>>1

;57 sort(a+1,a+1+n);

58 sort(b+1,b+1+n);

59int las=0;60

for(int i=1;i<=n;++i)

6166

init();

67 f[0][0]=1;68

for(int i=1;i<=n;++i)

6974 g[n]=f[n][n];

75for(int i=n-1;i>=s;--i)

7683 printf("

%lld

",g[s]);

84return0;

85 }

ac**

這個dp在考場上幾乎沒有人寫出來。為什麼這麼難?我再次略總結一下:

1、這個dp出現了不只乙個轉移方程,即乙個轉移方程解決不了這個問題, 必須要分步處理,每一步都是個dp。我們做這個題,要考慮怎麼分步、步驟之間的聯絡、每步的處理方式。而這就很難想了。

2、用到了容斥原理的數學知識,對數學基礎不行的同學(尤其是作者)極為不友好。

2018 10 12 校內模擬賽

分析 題一 一道模擬題 但模擬也是有很多坑的 寫出一道題後,一定要自己試很多很多很多組不同的資料 比如這道題,幾乎我試的每一組資料都找出了我程式的bug,好險 分析 題二 好題!應該是和松鼠聚會這道題本質一樣的 首先我們需要推導出任意兩個點 x,y a,b 之間能夠到達彼此所需要走的最短步數,由於可...

1105 校內模擬賽

題一 差分約束or帶權並查集?不啊,zz了,簡單模擬即可 我簡直服了我自己了,想複雜了 直接對每乙個聯通塊隨便找乙個點賦位置,然後dfs繼續找下去,給每乙個點賦值,如果在搜尋的過程中,發現了有衝突,就是impossible了 注意加邊的時候加雙向邊,因為你是從隨便乙個點開始搜尋的 然後這麼簡單的乙個...

2018 9 27 校內模擬賽

a dna 題目大意 給定乙個長度為n,每項值為1或2的數列。有q次詢問,對於每次詢問回答乙個區間 l,r 使得區間內的和等於xi。時間限制 1000ms 空間限制 256mb 編譯指令 開啟o2和c 11 solution 容易發現,若存在乙個權值和為 x x 2 的串,必然存在乙個權值和 為 x...