[ZJOI2015] 地震后的幻想鄉
給定一個無向圖 \(G\) ,\(n\) 個點 \(m\) 條邊每條邊權為 \([0,1]\) 的隨機實數,求這張圖的最小生成樹的最大邊權期望。
\(1\le n\le 10,1\le m\le \frac{n(n-1)}{2}\) 。
Solution
引理 \(1\) :
\(n\) 個 \([0,1]\) 隨機變量 $x_1,\cdots,x_n $ ,第 \(k\) 小的期望值是 \(\frac{k}{n+1}\)
證明:枚舉第 \(k\) 小值為 \(x\) :\(\binom{n}{k}\int_0^1x \cdot x^{k-1}\cdot (1-x)^{n-k} dx=\frac{k}{n+1}\) 。
暴力枚舉 \(m\) 條邊的相對大小關系,套引理即可做到 \(\mathcal O(m!poly(n))\) 。
考慮狀壓 dp ,定義 \(f_{S,i},g_{S,i}\) 表示點集 \(S\) ,用了 \(i\) 條邊,且點集不連通/連通的方案數,\(d_{S}\) 表示點集 \(S\) 導出子圖的邊數。
考慮 \(f\) 的轉移,我們枚舉一個連通塊(不妨是 \(lowbit(S)\) 所屬的那個塊),其他的點之間任意連邊,則: \(f_{S,i}=\sum\limits_{lowbit(S) \in T\subset S}\sum\limits_{j=0}^{|d_T|}g_{T,j}\binom{|d_{S-T}|}{i-j}\)
注意到 加了 i 條邊恰好連通概率 = 加之前不連通概率 - 加之后不連通概率 ,因此答案為:
時間復雜度 \(\mathcal O(3^nm)\) 。
Day1
T1
給定一個由字符 \(\text{'a', 'b'}\) 構成的字符串 \(str\) 。
一個串為好串的定義是:串長為偶數,且左右兩半相等。比如說 \(abcdeabcde\) 就是好串。
有 \(q\) 次詢問,詢問區間 \([l,r]\) 內有多少個本質不同的好串(也就是一模一樣的好串只算 \(1\) 次)。
\(1\le n,q\le 2\times 10^5\)
T2
給定一顆廣義線段樹,讀入按中序遍歷的方式告訴你每根線段 \([l,r]\) 的 \(mid\) 值。
你需要執行 \(k\) 次 選區間 操作,每次等概率選擇一個區間 \([ql, qr]\) 滿足 \(1\le ql\le qr\le n\) ,並且相應在線段樹上打懶標記。
對於每個區間 \([ql, qr]\),執行 \(\text{modify(1, 1, n, ql, qr)}\) :
void pushdown(int u) {
if (tag[u]) {
tag[lson[u]] = 1;
tag[rson[u]] = 1;
tag[u] = 0;
}
}
void modify(int u, int l, int r, int ql, int qr) {
if ([l, r] ∩ [ql, qr] = 空集) return ;
if (ql <= l && r <= qr) {
tag[u] = 1;
return ;
}
int mid = 讀入的 mid 值;
pushdown(u);
if (ql <= mid) modify(lson[u], l, mid, ql, qr);
if (qr > mid) modify(rson[u], mid + 1, r, ql, qr);
}
請求出期望下線段樹中 \(tag\) 值為 \(1\) 的線段的個數。
\(n\) 在 \(10^5\) 級別, \(1\le k\le 10^9\) 。
T3
給定一個長度為 \(n\) 的序列 \(a_1,a_2,...,a_n\),你可以執行以下三種操作:
- 選擇一個區間 \([l,r]\) ,讓區間內的數全減 \(1\)
- 選擇一個區間 \([l,r]\) ,讓區間內下標是奇數的數全減 \(1\)
- 選擇一個區間 \([l,r]\) ,讓區間內下標是偶數的數全減 \(1\)
你需要最小化你的操作次數,使得所有數變成 \(0\) 。
Day2
T1
\(Alice\) 和 \(Bob\) 在 樹/基環樹 上的游戲。。。
題面有點長,咕咕
T2
給定 \(n\) 個數 \(a_1,a_2,...,a_n\) ,每次等概率選擇一個數(選過的數下次可能還會被選)。
問期望下取多少次數,才能出現 \(k\) 個連續的數(也就是滿足 \(a_{i_1},a_{i_2},a_{i_3},...\) 依次 \(+1\))?
\(1\le n\le 2\times 10^5, 1\le a_i\le 10^9\)(好像)
T3
給定 \(n\) 個方程組,參數 \(a_i,c_i\)。
給出一個擾動 \(err\) ,每個 \(p_i\) 均為 \([\lceil - \frac{err}{2} \rceil, \lceil \frac{err}{2} \rceil]\) 內隨機的一個數。
你需要找到一個 \(x\) ,使得它滿足上述所有條件。
數據保證有且僅有一個 \(x\) 滿足條件。
\(n=2000, 1\le a_i,c_i,p\le 10^{18}\)
如果要用 \(\text{__int128}\) ,請手寫。
