2019牛客暑期多校訓練營(第一場)
A.Equivalent Prefixes
solved by RDC 42min -1, assisted by F0_0H
題意 給兩個序列,求最長前綴使得笛卡爾樹相同。
做法1 二分前綴,建笛卡爾樹。
做法2 遞歸地計算 \([l,r]\) 區間內,最長笛卡爾樹相等的前綴。查詢兩個序列在 \([l,r]\) 區間內,最小值的位置,設分別為 \(p_1,p_2\),若 \(p_1 \neq p_2\),遞歸到 \([l,max(p1,p2)-1]\),否則遞歸到 \([l,p_1-1]\) 若在 \([l,p_1-1]\) 上兩序列笛卡爾樹相同則遞歸到 \([p_1+1,r]\)。
B. Integration
upsolved
做法
- 欲求\(c_i\),使\(\sum_{i=1}^{n}\frac{c_i}{a_i^2+x^2}=\frac{1}{\prod_{i=1}^{n}(a_i^2+x^2)}\)
- 通分后分子相等:\(\sum_{i=1}^{n}c_i\prod_{j!=i}(a_j^2+x^2)=1\)
- 令\(x^2=-a_i^2\),代入得到\(c_i\prod_{j!=i}(a_j^2-a_i^2)=1\)
- 即\(c_i=\frac{1}{\prod_{j!=i}(a_j^2-a_i^2)}\)
C.Euclidean Distance
solved by RDC 245min, assisted by F0_0H
題意 求點到高維平面區域最近距離。
做法
- 如果點向平面垂足在區域內,那么找到最優解。
- 否則最優解一定在邊界上,即某些維上坐標為 0.
- 對距離的表達式展開,注意到在 \(a_i\) 最小的 \(k\) 維上坐標為 0 是最優的,那么我們需要放逐掉幾個維度呢?
- 二分 \(k\) 值,尋找最小的 \(k\) 使得,點向平面的垂足在區域內。
- 更大的 \(k\) 不如當前解優,更小的 \(k\) 表示最優解在邊界上。
D. Parity of Tuples
upsolved by 題解
題意 n個m元組\(v_1,v_2,...,v_n\),其中\(v_i=(a_{i,1},a_{i,2},...,a_{i,m})\)對於x,求有多少個元組\(v_i\)滿足對於所有j,\(a_{i,j}\ and\ x\)有奇數個1,對\(0≤x<2^k\)都求其答案
做法
- 構造長度為\(2^k\)的數組\(F\),考慮元組\((a_1,a_2,...,a_m)\)
- 對於所有子集S,把\(F[\bigoplus_{i\in S}a_i]\)加上\((-1)^{|S|}\)
- 對F做FWT,\(FWT(F)[x]/2^m\)就是答案
正確性證明 by sdcgvhgj
- 考慮元組\((a_1,a_2,...,a_m)\)的子集S對\(FWT(F)[x]\)的貢獻
- FWT變換的定義:\(FWT(F)[x]=\sum_{i=0}^{n}(-1)^{|i\bigcap x|}F_i\)
- 所以貢獻為:\((-1)^{|(\bigoplus_{i\in S}a_i)\bigcap x|}*(-1)^{|S|}\)
- \(=(-1)^{|\bigoplus_{i\in S}a_i\bigcap x|}*(-1)^{|S|}\),\(\bigcap\)對\(\bigoplus\)有分配率
- \(=(-1)^{\sum_{i\in S}|a_i\bigcap x|}*(-1)^{|S|}\),x和y中1的個數和的奇偶性和x⨁y中1的個數的奇偶性是一樣的。
- \(=(-1)^{\sum_{i\in S}1+|a_i\bigcap x|}\)
- \(=\prod_{i\in S}(-1)^{1+|a_i\bigcap x|}\)
- 所有S對\(FWT(F)[x]\)的貢獻之和\(=\sum_S\prod_{i\in S}(-1)^{1+|a_i\bigcap x|}\)
- \(=\prod_i(1+(-1)^{1+|a_i\bigcap x|})\)
- 若\(|a_i\bigcap x|\)全為奇數則值為\(2^m\),否則為0
E.ABBA
upsolved by RDC
題意 有多少個長度為 \(2(n+m)\) 的AB序列,可以划分成 \(n\) 個 \(AB\) 子序列,\(m\) 個 \(BA\) 子序列。
做法
- 一個序列能成功划分,等價於可以進行如下的貪心匹配,讓前 \(n\) 個 \(A\) 字符,參與 \(AB\) 串,后 \(m\) 個 \(A\) 字符,參與 \(BA\) 串的構造,\(B\) 字符類似。於是只要知道了一個字符的在同類中的 rank 就能知道它該匹配誰。
- \(dp[x][y]\) 表示長度為 \(x+y\) 的,有 \(x\) 個 \(A\),\(y\) 個 \(B\) 的前綴,不違背以上匹配規則的,方案數。
- 枚舉下一個字符是啥。
F.Random Point in Triangle
solved by sdcgvgj 61min
題意 三角形內隨機選點到與三邊形成的三角形的最大值的期望。
做法 E = S*22/36
H.XOR
upsolved by RDC
題意 給 \(n\) 個元素,輸出異或和為 0 的集合 size 之和。
做法
- 插入線性基,記錄主元所在的行由哪些元素異或而得(至多維數個)。
- 記錄全為 0 的行,由哪些元素異或而得(至多維數個)。
- 考慮暴力,我們枚舉取哪些全是 0 的行。
- 考慮優化,按位算貢獻即可。
夕陽紅
- 比賽時寫了個 1<<62。
- 試圖絕殺的時候,不會算 \(\sum_{i=1}^{n} iC_{n}^{i}\)
I.Points Division
upsolved by F0_0H
題意 二維平面上給定n個點,每個點有兩個屬性\((a[i], b[i])\),要求用一條單調遞增的折線把平面分成兩部分,最大化(上半部分的\(a[i]\)和 \(+\) 下半部分的\(b[i]\)和)
題解
- 首先對數據離散化
- \(DP[i][j][0]\) 表示考慮前\(i\)行,折線最高點在第\(j\)列下方一丟丟的最大值
- \(DP[i][j][1]\) 表示考慮前\(i\)行,折線最高點在第\(j\)列上方一丟丟的最大值
- \(DP[i][j][0] = max(max_{1\leq j\leq i}DP[i-1][j][0], max_{1\leq j \leq i-1}DP[i-1][j][1])+\sum_{j\leq k\leq n}a[i][k]+\sum_{1\leq k\leq j-1}b[i][k]\)
- \(DP[i][j][1] = max(max_{1\leq j \leq i}DP[i-1][j][0], max_{1\leq j \leq i}DP[i-1][j][1])+\sum_{j+1\leq k\leq n}a[i][k]+\sum_{1\leq k\leq j}b[i][k]\)
- 線段樹維護轉移
J.Fraction Comparision
solved by F0_0H 9 min
題意 比較兩分數大小
題解 簡單簽到,隨便搞