acm-(推式子、好題、數學、排列計數)2020ICPC·小米 網路選拔賽第一場 H.Grouping
傳送門
先將
a
i
a_i
ai從小到大排序。
然後這裡有一些符號約定:
g
g
g表示一個分組,
w
g
=
∣
a
i
−
a
j
∣
w_g=|a_i-a_j|
wg=∣ai−aj∣表示某個組
g
g
g的權值,
G
G
G表示所有分組構成的一個不重集,
m
m
m表示一種對序列的分組方案,
w
m
‾
=
1
n
∑
g
∈
m
w
g
\overline{w_m}=\frac 1n\sum_{g\in m}w_g
wm=n1∑g∈mwg表示分組方案
m
m
m中各個組權值的平均數,
W
m
=
1
n
∑
g
∈
m
(
w
g
−
w
m
‾
)
2
W_m=\frac 1n\sum_{g\in m}(w_g-\overline{w_m})^2
Wm=n1∑g∈m(wg−wm)2表示分組方案
m
m
m的權值(見題目定義),
M
M
M表示所有分組方案構成的一個不重集,
s
u
m
[
n
]
=
∑
i
=
1
n
a
i
sum[n]=\sum_{i=1}^na_i
sum[n]=∑i=1nai代表字首和。
於是我們要求的其實就是
a
n
s
=
1
∣
M
∣
∑
m
∈
M
W
m
=
1
n
∣
M
∣
∑
m
∈
M
∑
g
∈
m
(
w
g
2
−
2
w
g
w
m
‾
+
w
m
‾
2
)
=
1
n
∣
M
∣
∑
m
∈
M
∑
g
∈
m
w
g
2
−
1
n
∣
M
∣
∑
m
∈
M
w
m
‾
∑
g
∈
m
(
2
w
g
−
w
m
‾
)
=
1
n
∣
M
∣
∑
m
∈
M
∑
g
∈
m
w
g
2
−
1
n
∣
M
∣
∑
m
∈
M
1
n
[
∑
g
∈
m
w
g
]
[
2
∑
g
∈
m
w
g
−
∑
g
∈
m
w
m
‾
]
=
1
n
∣
M
∣
∑
m
∈
M
∑
g
∈
m
w
g
2
−
1
n
2
∣
M
∣
∑
m
∈
M
[
∑
g
∈
m
w
g
]
[
2
∑
g
∈
m
w
g
−
∣
m
∣
w
m
‾
]
=
1
n
∣
M
∣
∑
m
∈
M
∑
g
∈
m
w
g
2
−
1
n
2
∣
M
∣
∑
m
∈
M
[
∑
g
∈
m
w
g
]
[
2
∑
g
∈
m
w
g
−
∑
g
∈
m
w
g
]
=
1
n
∣
M
∣
∑
m
∈
M
∑
g
∈
m
w
g
2
−
1
n
2
∣
M
∣
∑
m
∈
M
[
∑
g
∈
m
w
g
]
[
∑
g
∈
m
w
g
]
=
1
n
∣
M
∣
∑
m
∈
M
∑
g
∈
m
w
g
2
−
1
n
2
∣
M
∣
∑
m
∈
M
(
∑
g
∈
m
w
g
)
2
\begin{aligned} ans&=\frac 1{|M|}\sum_{m\in M}W_m\\ &=\frac 1{n|M|}\sum_{m\in M}\sum_{g\in m}(w_g^2-2w_g\overline{w_m}+\overline{w_m}^2)\\ &=\frac 1{n|M|}\sum_{m\in M}\sum_{g\in m}w_g^2-\frac 1{n|M|}\sum_{m\in M}\overline{w_m}\sum_{g\in m}(2w_g-\overline{w_m})\\ &=\frac 1{n|M|}\sum_{m\in M}\sum_{g\in m}w_g^2-\frac 1{n|M|}\sum_{m\in M}\frac 1n[\sum_{g\in m}w_g][2\sum_{g\in m}w_g-\sum_{g\in m}\overline{w_m}]\\ &=\frac 1{n|M|}\sum_{m\in M}\sum_{g\in m}w_g^2-\frac 1{n^2|M|}\sum_{m\in M}[\sum_{g\in m}w_g][2\sum_{g\in m}w_g-|m|\overline{w_m}]\\ &=\frac 1{n|M|}\sum_{m\in M}\sum_{g\in m}w_g^2-\frac 1{n^2|M|}\sum_{m\in M}[\sum_{g\in m}w_g][2\sum_{g\in m}w_g-\sum_{g\in m}w_g]\\ &=\frac 1{n|M|}\sum_{m\in M}\sum_{g\in m}w_g^2-\frac 1{n^2|M|}\sum_{m\in M}[\sum_{g\in m}w_g][\sum_{g\in m}w_g]\\ &=\frac 1{n|M|}\sum_{m\in M}\sum_{g\in m}w_g^2-\frac 1{n^2|M|}\sum_{m\in M}(\sum_{g\in m}w_g)^2\\ \end{aligned}
ans=∣M∣1m∈M∑Wm=n∣M∣1m∈M∑g∈m∑(wg2−2wgwm+wm2)=n∣M∣1m∈M∑g∈m∑wg2−n∣M∣1m∈M∑wmg∈m∑(2wg−wm)=n∣M∣1m∈M∑g∈m∑wg2−n∣M∣1m∈M∑n1[g∈m∑wg][2g∈m∑wg−g∈m∑wm]=n∣M∣1m∈M∑g∈m∑wg2−n2∣M∣1m∈M∑[g∈m∑wg][2g∈m∑wg−∣m∣wm]=n∣M∣1m∈M∑g∈m∑wg2−n2∣M∣1m∈M∑[g∈m∑wg][2g∈m∑wg−g∈m∑wg]=n∣M∣1m∈M∑g∈m∑wg2−n2∣M∣1m∈M∑[g∈m∑wg][g∈m∑wg]=n∣M∣1m∈M∑g∈m∑wg2−n2∣M∣1m∈M∑(g∈m∑wg)2
接下來分對答案式子中的兩個部分分別求解。
對於第一部分
1
n
∣
M
∣
∑
m
∈
M
∑
g
∈
m
w
g
2
\frac 1{n|M|}\sum_{m\in M}\sum_{g\in m}w_g^2
n∣M∣1∑m∈M∑g∈mwg2,首先由於每個組出現的可能性相同,我們有
1
n
∣
M
∣
∑
m
∈
M
∑
g
∈
m
w
g
2
=
1
∣
G
∣
∑
g
∈
G
w
g
2
\frac 1{n|M|}\sum_{m\in M}\sum_{g\in m}w_g^2=\frac 1{|G|}\sum_{g\in G}w_g^2
n∣M∣1∑m∈M∑g∈mwg2=∣G∣1∑g∈Gwg2,
其中
∣
G
∣
=
2
n
(
2
n
−
1
)
2
=
n
(
2
n
−
1
)
|G|=\frac {2n(2n-1)}{2}=n(2n-1)
∣G∣=22n(2n−1)=n(2n−1),
∑
g
∈
G
w
g
2
=
∑
i
=
1
2
n
∑
j
=
i
+
1
2
n
(
a
i
2
+
a
j
2
−
2
a
i
a
j
)
=
∑
i
=
1
2
n
∑
j
=
i
+
1
2
n
a
i
2
+
∑
i
=
1
2
n
∑
j
=
i
+
1
2
n
a
j
2
−
∑
i
=
1
2
n
∑
j
=
i
+
1
2
n
2
a
i
a
j
=
∑
i
=
1
2
n
(
2
n
−
i
)
a
i
2
+
∑
i
=
1
2
n
(
i
−
1
)
a
i
2
−
∑
i
=
1
2
n
2
a
i
s
u
m
[
i
−
1
]
=
∑
i
=
1
2
n
(
2
n
−
1
)
a
i
2
+
∑
i
=
1
2
n
2
a
i
s
u
m
[
i
−
1
]
\begin{aligned} \sum_{g\in G}w_g^2&=\sum_{i=1}^{2n}\sum_{j=i+1}^{2n}(a_i^2+a_j^2-2a_ia_j)\\ &=\sum_{i=1}^{2n}\sum_{j=i+1}^{2n}a_i^2+\sum_{i=1}^{2n}\sum_{j=i+1}^{2n}a_j^2-\sum_{i=1}^{2n}\sum_{j=i+1}^{2n}2a_ia_j\\ &=\sum_{i=1}^{2n}(2n-i)a_i^2+\sum_{i=1}^{2n}(i-1)a_i^2-\sum_{i=1}^{2n}2a_isum[i-1]\\ &=\sum_{i=1}^{2n}(2n-1)a_i^2+\sum_{i=1}^{2n}2a_isum[i-1]\\ \end{aligned}
g∈G∑wg2=i=1∑2nj=i+1∑2n(ai2+aj2−2aiaj)=i=1∑2nj=i+1∑2nai2+i=1∑2nj=i+1∑2naj2−i=1∑2nj=i+1∑2n2aiaj=i=1∑2n(2n−i)ai2+i=1∑2n(i−1)ai2−i=1∑2n2aisum[i−1]=i=1∑2n(2n−1)ai2+i=1∑2n2aisum[i−1]
因此對於第一部分我們有
1
n
∣
M
∣
∑
m
∈
M
∑
g
∈
m
w
g
2
=
1
n
(
2
n
−
1
)
[
∑
i
=
1
2
n
(
2
n
−
1
)
a
i
2
+
∑
i
=
1
2
n
2
a
i
s
u
m
[
i
−
1
]
]
\frac 1{n|M|}\sum_{m\in M}\sum_{g\in m}w_g^2=\frac 1{n(2n-1)}[\sum_{i=1}^{2n}(2n-1)a_i^2+\sum_{i=1}^{2n}2a_isum[i-1]]
n∣M∣1∑m∈M∑g∈mwg2=n(2n−1)1[∑i=12n(2n−1)ai2+∑i=12n2aisum[i−1]]成立,這個式子顯然可以
O
(
n
)
O(n)
O(n)求解。
然後再來看第二部分 1 n 2 ∣ M ∣ ∑ m ∈ M ( ∑ g ∈ m w g ) 2 \frac 1{n^2|M|}\sum_{m\in M}(\sum_{g\in m}w_g)^2 n2∣M∣1∑m∈M(∑g∈mwg)2,設 T n = ∣ M ∣ T_n=|M| Tn=∣M∣,它代表將 2 n 2n 2n個數兩兩分成一組的方案數,根據乘法原理不難知道 T n = ( 2 n − 1 ) ! ! T_n=(2n-1)!! Tn=(2n−1)!!。
還是先推式子:
1
n
2
∣
M
∣
∑
m
∈
M
(
∑
g
∈
m
w
g
)
2
=
1
n
2
∣
M
∣
∑
m
∈
M
(
∑
g
∈
m
w
g
2
+
∑
g
≠
h
∈
m
2
w
g
w
h
)
=
1
n
2
∣
M
∣
∑
m
∈
M
∑
g
∈
m
w
g
2
+
1
n
2
∣
M
∣
∑
m
∈
M
∑
g
≠
h
∈
m
2
w
g
w
h
\begin{aligned} \frac 1{n^2|M|}\sum_{m\in M}(\sum_{g\in m}w_g)^2&=\frac 1{n^2|M|}\sum_{m\in M}(\sum_{g\in m}w_g^2+\sum_{g\ne h\in m}2w_gw_h)\\ &=\frac 1{n^2|M|}\sum_{m\in M}\sum_{g\in m}w_g^2+\frac 1{n^2|M|}\sum_{m\in M}\sum_{g\ne h\in m}2w_gw_h\\ \end{aligned}
n2∣M∣1m∈M∑(g∈m∑wg)2=n2∣M∣1m∈M∑(g∈m∑wg2+g=h∈m∑2wgwh)=n2∣M∣1m∈M∑g∈m∑wg2+n2∣M∣1m∈M∑g=h∈m∑2wgwh
注意到
1
n
2
∣
M
∣
∑
m
∈
M
∑
g
∈
m
w
g
2
\frac 1{n^2|M|}\sum_{m\in M}\sum_{g\in m}w_g^2
n2∣M∣1∑m∈M∑g∈mwg2這一項其實就是
1
n
⋅
1
n
∣
M
∣
∑
m
∈
M
∑
g
∈
m
w
g
2
=
1
n
⋅
第
一
部
分
\frac 1n\cdot \frac 1{n|M|}\sum_{m\in M}\sum_{g\in m}w_g^2=\frac 1n\cdot 第一部分
n1⋅n∣M∣1∑m∈M∑g∈mwg2=n1⋅第一部分,因此可以直接根據第一部分得出它的值,那麼第二項我們再單獨考慮,也就是
1
n
2
∣
M
∣
∑
m
∈
M
∑
g
≠
h
∈
m
2
w
g
w
h
\frac 1{n^2|M|}\sum_{m\in M}\sum_{g\ne h\in m}2w_gw_h
n2∣M∣1∑m∈M∑g=h∈m2wgwh,方便起見我們先算出
∑
m
∈
M
∑
g
≠
h
∈
m
2
w
g
w
h
\sum_{m\in M}\sum_{g\ne h\in m}2w_gw_h
∑m∈M∑g=h∈m2wgwh。注意到對於所有的
2
w
g
w
h
,
h
≠
g
2w_gw_h,h\ne g
2wgwh,h=g而言,它會在所有的分組方案中出現
T
n
−
2
T_{n-2}
Tn−2次,因此不妨求出所有互不相同的
2
w
g
w
h
2w_gw_h
2wgwh的總和,然後再乘以
T
n
−
2
T_{n-2}
Tn−2即可。而且注意到
2
w
g
w
h
2w_gw_h
2wgwh一定是某一個分配方案中的交叉項,所以絕對不會出現
g
g
g和
h
h
h這兩個組的某一個元素編號相同的情況,因此我們可以將所有互不相同的且符合條件的
2
w
g
w
h
2w_gw_h
2wgwh表示成
∑
i
=
1
2
n
∑
j
=
i
+
1
2
n
∑
k
=
i
+
1
,
k
≠
j
2
n
∑
l
=
k
+
1
,
k
≠
j
2
n
2
∣
a
i
−
a
j
∣
∣
a
k
−
a
l
∣
\sum_{i=1}^{2n}\sum_{j=i+1}^{2n}\sum_{k=i+1,k\ne j}^{2n}\sum_{l=k+1,k\ne j}^{2n}2|a_i-a_j||a_k-a_l|
∑i=12n∑j=i+12n∑k=i+1,k=j2n∑l=k+1,k=j2n2∣ai−aj∣∣ak−al∣,求出這個式子後乘以
T
n
−
2
T_{n-2}
Tn−2就是
∑
m
∈
M
∑
g
≠
h
∈
m
2
w
g
w
h
\sum_{m\in M}\sum_{g\ne h\in m}2w_gw_h
∑m∈M∑g=h∈m2wgwh。
再推一波式子,運用容斥原理:
∑
i
=
1
2
n
∑
j
=
i
+
1
2
n
∑
k
=
i
+
1
,
k
≠
j
2
n
∑
l
=
k
+
1
,
k
≠
j
2
n
2
∣
a
i
−
a
j
∣
∣
a
k
−
a
l
∣
=
∑
i
=
1
2
n
∑
j
=
i
+
1
2
n
∑
k
=
1
2
n
∑
l
=
k
+
1
2
n
∣
a
i
−
a
j
∣
∣
a
k
−
a
l
∣
−
∑
i
=
1
2
n
(
∑
j
=
1
,
j
≠
i
2
n
∣
a
i
−
a
j
∣
)
2
+
∑
i
=
1
2
n
∑
j
=
i
+
1
2
n
∣
a
i
−
a
j
∣
2
=
(
∑
g
∈
G
w
g
)
2
−
∑
i
=
1
2
n
(
(
i
−
1
)
a
i
−
s
u
m
[
i
−
1
]
+
s
u
m
[
2
n
]
−
s
u
m
[
i
]
−
(
2
n
−
i
)
a
i
)
2
+
∑
g
∈
G
w
g
2
\begin{aligned} \sum_{i=1}^{2n}\sum_{j=i+1}^{2n}\sum_{k=i+1,k\ne j}^{2n}\sum_{l=k+1,k\ne j}^{2n}2|a_i-a_j||a_k-a_l|&=\sum_{i=1}^{2n}\sum_{j=i+1}^{2n}\sum_{k=1}^{2n}\sum_{l=k+1}^{2n}|a_i-a_j||a_k-a_l|-\sum_{i=1}^{2n}(\sum_{j=1,j\ne i}^{2n}|a_i-a_j|)^2+\sum_{i=1}^{2n}\sum_{j=i+1}^{2n}|a_i-a_j|^2\\ &=(\sum_{g\in G}w_g)^2-\sum_{i=1}^{2n}((i-1)a_i-sum[i-1]+sum[2n]-sum[i]-(2n-i)a_i)^2+\sum_{g\in G}w_g^2\\ \end{aligned}
i=1∑2nj=i+1∑2nk=i+1,k=j∑2nl=k+1,k=j∑2n2∣ai−aj∣∣ak−al∣=i=1∑2nj=i+1∑2nk=1∑2nl=k+1∑2n∣ai−aj∣∣ak−al∣−i=1∑2n(j=1,j=i∑2n∣ai−aj∣)2+i=1∑2nj=i+1∑2n∣ai−aj∣2=(g∈G∑wg)2−i=1∑2n((i−1)ai−sum[i−1]+sum[2n]−sum[i]−(2n−i)ai)2+g∈G∑wg2
解釋一下上面的推導過程,
(
∑
g
∈
G
w
g
)
2
(\sum_{g\in G}w_g)^2
(∑g∈Gwg)2其實就是全集,包含了所有組的交叉項和平方項,不過我們要去掉那些平方項和不符合條件的交叉項,其中不符合條件的交叉項
2
w
g
w
h
2w_gw_h
2wgwh滿足
h
h
h與
g
g
g組中存在一個元素編號相同,於是列舉這個相同的編號
i
i
i,於是可以得到
∑
i
=
1
2
n
(
∑
j
=
1
,
j
≠
i
2
n
∣
a
i
−
a
j
∣
)
2
\sum_{i=1}^{2n}(\sum_{j=1,j\ne i}^{2n}|a_i-a_j|)^2
∑i=12n(∑j=1,j=i2n∣ai−aj∣)2,不過其中又多加了
2
2
2倍的平方項,於是還要加一個平方項
∑
g
∈
G
w
g
2
\sum_{g\in G}w_g^2
∑g∈Gwg2。
上面式子中的 ∑ g ∈ G w g 2 \sum_{g\in G}w_g^2 ∑g∈Gwg2和 ∑ g ∈ G w g 2 \sum_{g\in G}w_g^2 ∑g∈Gwg2都好求,就不多說了。
最後我們求出兩部分後作差就可以算出最終答案了。
這裡給出一份參考程式碼:
int a[maxn<<1],t[maxn],sm[maxn<<1];
int main(){
int n=rd(),all=0,wg=0,wg2=0,G=0,nn=0,ans=0,as=0,n2=n<<1;
FOR(i,1,n2)a[i]=rd();
sort(a+1,a+1+2*n);
sm[1]=a[1],wg2=1ll*(n2-1)*sqr(a[1])%mod;
t[0]=1;
FOR(i,2,n2){
sm[i]=sum(sm[i-1],a[i]);
add(wg,sub(1ll*(i-1)*a[i]%mod,sm[i-1]));
add(wg2,sub(1ll*(n2-1)*sqr(a[i])%mod,2ll*a[i]*sm[i-1]%mod));
if(!(i&1))t[i>>1]=1ll*t[(i>>1)-1]*(i-1)%mod;
}
all=sm[n2];
G=qpow(1ll*n*(n2-1)%mod,mod-2,mod),nn=qpow(n,mod-2,mod);
ans=sub(1ll*G*wg2%mod,1ll*nn*G%mod*wg2%mod);
if(n==1)return wrn(ans),0;
as=sum(1ll*wg*wg%mod,wg2);
FOR(i,1,n2){
dec(as,sqr(sum(sub(1ll*(i-1)*a[i]%mod,sm[i-1]),sub(sub(all,sm[i]),1ll*(n2-i)*a[i]%mod))));
}
as=1ll*as*t[n-2]%mod*sqr(nn)%mod*qpow(t[n],mod-2,mod)%mod;
dec(ans,as);
wrn(ans);
}
相關文章
- 2020ICPC·小米 網路選拔賽第一場
- 2020ICPC·小米 網路選拔賽熱身賽K-Random Point in Trianglerandom
- 2020ICPC·小米 網路選拔賽第二場 Subsequence Pair(貪心二分)AI
- 2020ICPC小米網路賽 C.Data Structure ProblemStruct
- 河北大學選拔賽補題
- P4900 食堂(數學式子推導)
- 全排列價值(數學問題)
- 2024ICPC網路賽第一場題解(部分)
- acm-排列組合學習筆記(更新中)ACM筆記
- 2024中國工業網際網路安全大賽智慧家電行業賽道選拔賽行業
- 【數學】組合數學 - 排列組合
- 天梯選拔賽2補題_2024_03_09
- 推式子的做題記錄
- [BZOJ2111][ZJOI2010]排列計數-題解
- 2024天梯選拔賽(一)
- 2024 ICPC 網路預選賽 第 2 場
- 卷積核大小選擇、網路層數問題卷積
- 如何寫好數學建模競賽論文
- 2023年中國高校計算機大賽-團隊程式設計天梯賽(GPLT)上海理工大學校內選拔賽 (vp + 補題)計算機程式設計
- 2020“數維杯”國際大學生數學建模競賽賽題分析
- 2014省賽---六角填數(填空)(全排列)
- 2020ICPC小米邀請賽2 A-2020(貪心+二分)
- 洛谷 P2606 [ZJOI2010] 排列計數 題解
- 挑戰倒數計時!“網際網路+”大賽華為命題加速高階能力提升
- 神經網路也能解數學題,DeepMind釋出千萬數學題海資料集神經網路
- 【POJ 2249】 Binomial Showdown 組合數學 排列組合計算
- 數之重排列
- M-災難預警-浙江農林大學第十九屆程式設計競賽暨天梯賽選拔賽程式設計
- 【wp】HWS計劃2021硬體安全冬令營線上選拔賽
- 二分/貪心(ICPC小米預賽第一場 A 2020)
- 泰山學堂選拔遊記
- 好題——數學與資料結構資料結構
- 雜題記錄-省選數學
- 2020年數學建模國賽B題解題思路
- 組合數學筆記-排列與組合筆記
- 小學數學程式設計題程式設計
- 美賽整理之Matlab的工程數學計算學習筆記(高等數學)Matlab筆記
- 測試主機網路連通性ping命令引數選項-linux網路管理學習Linux