2018提高组训练Day2
A
算法 1
對于每組詢問,暴力的算出每個二次函數(shù)的取值。
時間復雜度 \(O(nq)\)。期望得分 \(20\) 分。
算法 2
當 \(x>0\) 時,要求 \(a_ix^2+b_ix\) 的最大值,只需要求出 \(a_ix+b_i\) 的最大值。
于是問題就轉化為了,給定一堆直線,求在某些點的最大值。顯然答案一定在上凸殼上。
對于每組詢問,只要二分出它在上凸殼的哪個位置就行。
同樣的,當 \(x<0\) 時,答案在 \(a_ix+b_i\) 的下凸殼上,再寫一個凸殼就行了。
時間復雜度 \(O((n+q)\log n)\)。期望得分 \(100\) 分。
B
算法 1
直接按題意枚舉,動態(tài)規(guī)劃或是記憶化搜索。
時間復雜度 \(O(a^n)\)。期望得分 \(30\) 分。
算法 2
考慮第二個測試點。只需要記錄當前還有多少個位置為 \(1\) 就行了。
時間復雜度 \(O(n)\)。期望得分 \(10\) 分。加上算法 1,期望得分 \(40\) 分。
算法 3
答案可以看成是每一個元素被選中的次數(shù)之和。由于期望的線性性,我們可以去計算每一個位置被選中的次數(shù)的期望。
首先,第一個元素一定被減了 \(a_1\) 次。
考慮某一個位置 \(i\),假設當前有 \(c\) 個元素不為 \(0\),那么每個元素被操作的概率都是 \(\frac{1}{c}\)。倘若只關注 \(1\) 和 \(i\) 兩個元素,可以發(fā)現(xiàn)操作其它元素的時候對它們沒有影響,而且它們兩個被操作的概率是相等的。于是這個問題就等價與一個只有兩個元素的原問題。
因此元素之間是獨立的!使用算法 1 中的動態(tài)規(guī)劃就可以知道每個元素對答案的貢獻,求和即可。
時間復雜度 \(O(a^2+n)\)。期望得分 \(60\) 分。
算法 4
算法 3 中的動態(tài)規(guī)劃可以看成從 \((a_1, a_i)\) 出發(fā)的隨機游走,每次隨機一個方向將減 \(1\),直到走到坐標軸上為止。若停在 \((0,a)\),對答案的貢獻為 \(a_i-a\)。若停在 \((a,0)\),對答案的貢獻為 \(a_i\)。
于是可以直接寫出貢獻的式子。
\[\sum_{i=0}^{a_i-1}i*\frac{a_1-1+i\choose i}{2^{a_1+i}}+a_i(1-\sum_{i=0}^{a_i-1}\frac{a_1-1+i\choose i}{2^{a_1+i}})\]
前面那項是停留在 \((0,a)\) 的答案,后面那項是停留在 \((a,0)\) 的答案。
當 \(a_i\) 增加 \(1\) 的時候,變化的貢獻可以在 \(O(1)\) 的時間內(nèi)得到。(前后都是只增加了一項)
時間復雜度 \(O(a+n)\)。期望得分 \(100\) 分。
C
算法 1
對于每組詢問,遍歷所有節(jié)點,看看它是不是在路徑上,并計算答案。
時間復雜度 \(O(nq)\)。期望得分 \(10\) 分。
算法 2
由于可能詢問的點對只有 \(O(n^2)\) 組,每次枚舉 \(u\) 開始深搜。
時間復雜度 \(O(n^2)\)。期望得分 \(20\) 分。
算法 3
當樹形態(tài)隨機的時候,兩個點之間期望只有 \(O(\log n)\) 個點,暴力即可。
時間復雜度 \(O(Hq)\)。期望得分 \(20\) 分,結合算法 2,期望得分 \(30\) 分。
算法 4
當 \(a_i<2\) 的時,按位或只會對最后一位產(chǎn)生影響,即,當 \(dist(w,u)\) 為奇數(shù)且 \(a_w=1\) 時,答案需要減 \(1\)。于是只要倍增時順便維護從每一個點 \(t\) 出發(fā),向上 \(2^i\) 的距離之內(nèi),與 \(t\) 距離為奇數(shù)且點權為 \(1\) 的點的個數(shù)就行了。
時間復雜度 \(O(n\log n)\)。期望得分 \(10\) 分,結合算法 2、3,期望得分 \(40\) 分。
算法 5
類似的,可以分別考慮每一個二進制位對答案的貢獻。即,對于位 \(2^x\),維護從每一個點 \(t\) 出發(fā),向上 \(2^i\) 的距離之內(nèi),與 \(t\) 距離為 \(d\) 滿足 \(d \mathbin{\mathrm{and}} 2^x = 2^x\) 且點權的二進制表示中包含 \(2^x\) 的點的個數(shù)就行了。
由于路徑有向上的部分,也有向下的部分,因此還需要維護滿足 \(d \mathbin{\mathrm{and}} 2^x = 0\) 的點的個數(shù)在從 \(v\) 倍增的時候使用。
時間復雜度 \(O(n\log n \log a_i)\) 期望得分 \(50\) ~ \(60\) 分。
算法 6
注意到并不需要對于每一個位分別維護點的個數(shù)和,只需要維護所有重疊的位的數(shù)位和就行了,于是乎可以少掉一個 \(\log\)。
時間復雜度 \(O(n\log n)\) 期望得分 \(100\) 分。
轉載于:https://www.cnblogs.com/Alessandro/p/9854409.html
總結
以上是生活随笔為你收集整理的2018提高组训练Day2的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学习笔记27—python中numpy.
- 下一篇: 出现了错误。详细消息: 3 uncomm