1. 程式人生 > 其它 >11.9做題筆記

11.9做題筆記

CF1575M Managing Telephone Poles

對於一個點造成貢獻的,分成左上左下右上右下來討論,可以只交換一下位置用一個函式求解。

\[S_{x,y}=\min\limits_{k}\{(y-k)^2+(last_k-x)^2\} \]\[=\min\limits_{k}\{k^2-2kj+j^2+(last_k-x)^2\} \]

則:

\[k^2+(last_k-x)^2=2jk+S_{i,j}-j^2 \]

\(\begin{Bmatrix} y=k^2+(last_k-i)^2 \\ k=2j \\ x=k \\ b=S_{i,j}-j^2 \end{Bmatrix}\)


於是要維護一個斜率遞增截距最小的單調佇列即可

CF338E Optimize!

先將\(a,b\)陣列離散化之後利用線段樹區間修改查詢是否全域性最小值大於等於0,如果滿足累加答案即可。

CF1575B Building an Amusement Park

轉化一下題意,有一個以原點為圓心,\(r\) 為半徑的圓,求最小的 \(r\) 滿足使得圓周上的某個點,同時被包括在至少 \(k\) 個以某個特殊點為圓心,半徑為 \(r\) 的圓內。

顯然當比較小的半徑滿足條件時,大的半徑也會滿足條件,所以可以考慮二分答案。

那麼現在問題就在如何檢查答案合法性了。

當原點和另一個點的距離大於 \(2r\) 時,兩個圓顯然沒有交點,沒有貢獻。

當這個點與原點重複時相當於對於圓上的每一個點都有一的貢獻。

否則,這個點和原點的距離在 \(0\)\(2r\) 之間,形成的兩個圓一定有兩個交點,且這兩個交點與原點連線的夾角在一個平角之內,被包含在這個角之內的圓上的點都有一的貢獻。

於是對於第一種情況直接跳過,對於第二種情況開一個計數器,對於第三種情況,求出兩個交點的角度線上段樹上區間修改即可。下標用浮點數型別可以使用動態開點。

Paint

區間dp,設\(f_{i,j}\)表示將\([i,j]\)變為同一種顏色最少步數,轉移可以從\(f_{i+1,j}\)\(f_{i,j-1}\)過來或者列舉當前相同顏色段\(\min\limits_{k}^{col[k]=col[j]}\{f_{i,k}+f_{k+1,j}\}\)

即可。

CF258D Little Elephant and Broken Sorting

首先如果什麼都不交換則\(f_{i,j}=[a[i]>a[j]]\)
如果交換了\(x,y\)\(f_{x,y}=f_{y,x}=\frac{1}{2}\)
對於其他的則\(f_{i,x}=f_{i,y}=\frac{1}{2}f{i,x}+f_{i,y}\)
答案就是\(\sum\limits_{i=1}^n\sum\limits_{j=i}^nf_{i,j}\)

城市

列舉斷掉哪一條邊,答案就是剩下兩個聯通塊的直徑或者兩個聯通塊中各一個點,其他點到它的最大值的最小值這三個的最大值的最小值。

選數

\(L,H\)都除以\(k\),於是問題就轉化成了在\([L,H]\)中選\(n\)個數使得各數最大公約數為\(1\)的方案數。
\(f_i\)表示選取數的公約數中有\(i\),且選取的數不全相等的方案數,於是最大公約數就是\(i-\sum\limits_{i|j}^{j<=H-L+1}f_j\)容斥即可。最後答案就是\(f_1\),如果可以都選一就再加上一。

線段樹

\(n^4\)暴力思路就是設\(f_{v,i,l,r}\)表示第i輪,

\[[a[l-1]>v][a[r+1]>v]\prod\limits_{j=l}^{r}[a[j]<=v]=1 \]

的方案數,轉移就是

\[f_{v,i,l,r}=f_{v,i-1,l,r}g_{l,r}+\sum\limits_{j<l}f_{v,i-1,j,r}(j-1)+\sum\limits_{j>r}f_{v,i-1,l,j}(n-j) \]

其中\(g_{l,r}\)表示對\(l,r\)數無影響的運算元

\[g_{l,r}=C_l^2+C_{n-r+1}^2+C_{r-l+2}^2 \]

那麼答案就是:

\[ans_i=\sum_vv(h_{i,v}-h_{i,v-1}) \]

其中\(h_{i,j}\)表示\(i\)點的值不大於\(j\)的方案數

\[h_{i,j}=\sum\limits_{v<=j}\sum\limits_{l<=i}\sum\limits_{r>=i}f_{v,q,l,r} \]

考慮將複雜度優化到\(n^3\),設\(dp_{i,l,r}=\sum_vf_{v,i,l,r}\)
轉移式子是相同的但是初值不同。有:

\[dp_{0,l,r}=[a_{l-1}>\max\limits_{j=l}^r\{a_j\}][a_{r+1}>\max\limits_{j=l}^r\{a_j\}]\max\limits_{j=l}^r\{a_j\}-min{a_{i-1},a_{j+1}} \]

特別的,

\[dp_{0,1,n}=\max\limits_{j=1}^n\{a_j\} \]

再用字首和優化一下即可。