pack
設當前手上的錢數為x。
二分一段一段跳的複雜度是對的。
因為,如果下一段的代價總和sum < \dfrac{x}{2}。那麼這一段的下一個數肯定也小於\dfrac{x}{2}。因為是從大到小排。
所以還能繼續選下一個數,引出矛盾。
所以每段的代價總和只能大於\dfrac{x}{2}。那段數就是log級別的。直接跳的複雜度是 \(O(\log^2 {n})\)。
CF1307D Cow and Fields
設dis1[i]為1到i最短路,dis2[i]為i到n最短路。
必定經過點u的最短路為:dis1[u] + dis2[u]。
如果在此基礎上嘗試連線(u, v)這條邊。最短路將會嘗試變為。
min(dis1[u] + dis2[v], dis2[u] + dis1[v]) + 1。
這樣修改完後,和原本最短路的差就是:
dis1[u] + dis2[u] - dis2[u] - dis1[v] - 1。
即dis1[u] - dis1[v] - 1;
要使這一項最小。u、v必定在最短路1中相鄰。
好,爛尾了。