3 月水題練習

小超手123發表於2024-04-01

真是快呀😰,不知不覺一個月就過了?還是那麼菜。

img

稍微整理一下這個月做的水題(不包含我寫過題解的題)。

P3964 [TJOI2013] 松鼠聚會

定義兩個點 \((x_{1},y_{1}) \ (x_{2},y_{2})\) 的切比雪夫距離為 \(\max(|x_{1}-x_{2}|,|y_{1}-y_{2}|)\)

顯然原題就是在就求切比雪夫距離之和最小值。

先考慮將曼哈頓距離轉換:

\[\begin{aligned} d &=|x_{1}-x_{2}|+|y_{1}-y_{2}| \\&= \max(x_{1}-x_{2}+y_{1}-y_{2},x_{2}-x_{1}+y_{1}-y_{2},x_{1}-x_{2}+y_{2}-y_{1},x_{2}-x_{1}+y_{2}-y_{1}) \\&=\max(|(x_{2}+y_{2})-(x_{1}+y_{1})|,|(x_{2}-y_{2})-(x_{1}-y_{1})) \end{aligned} \]

那麼 \((x_{1},y_{1})\)\((x_{2},y_{2})\) 的曼哈頓距離就變成了 \((x_{1}+y_{1},x_{1}-y_{1})\)\((x_{2}+y_{2},x_{2}-y_{2})\) 的切比雪夫距離。

那麼曼哈頓意義下的座標 \((x,y)\),可轉化成切比雪夫意義下的座標 \((x+y,x-y)\)

那麼顯然切比雪夫意義下的座標 \((x,y)\) 可以轉換為曼哈頓意義下的座標 \((\frac{x+y}{2},\frac{x-y}{2})\)

然後就可以隨便亂做了。

P3702 [SDOI2017] 序列計數

簡單容斥一波,然後矩陣最佳化 dp 即可。

P3674 小清新人渣的本願

bitset 板題。

複習一下它的一些用法:

  • 定義:bitset<N>s

  • 賦值:(下標編號為 \([0,N-1]\))。時間複雜度為 \(O(1)\)

  • 位運算。時間複雜度為 \(O(\frac{n}{w})\)

  • 清空為 \(0\)s.reset(),時間複雜度為 \(O(\frac{n}{w})\)

  • 清空為 \(1\)s.set(),時間複雜度為 \(O(\frac{n}{w})\)

  • 查詢是否全部為 \(0\)bool Get = s.none()。時間複雜度為 \(O(\frac{n}{w})\)

  • 返回一個 \(1\) 的個數。s.count()。時間複雜度為 \(O(\frac{n}{w})\)

  • 全域性取反。s.flip()。時間複雜度為 \(O(\frac{n}{w})\)

然後這題使用 bitset 加莫隊即可。時間複雜度 \(O(\frac{nm}{w})\)

Ivan and Burgers

維護一個所有字首的線性基。然後插入的時候,優先將位數高的位置加入 \(id\) 大的即可。

The Sum of the k-th Powers

\(f_{n} = \sum_{i=1}^{n}i^{k}\)

\(f\) 做一個差分得到 \(1^k,2^k,\dots,n^{k}\)\(k\) 次多項式。

那麼 \(f\) 就是一個 \(k+1\) 次多項式,要用 \(k+2\) 個點值確定。拉格朗日插值即可。

CF995F

\(f(u,i)\) 表示以 \(u\) 為根的子樹用 \([1,i]\) 染色的方案數。

可以發現設 \(u\) 的子樹大小為 \(s_{u}\),那麼 \(f(u,x)\) 是關於 \(x\)\(s_{u}\) 次多項式。

歸納證明:

  • \(u\) 為葉子節點時,\(f(u,x)=x\)
  • 由於 \(f(u,x)-f(u,x-1) = \prod _{v \in son_{u}} f(v,x)\),因此 \(f(u,x)\) 是關於 \(x\)\(s_{u}\) 次多項式。

拉格朗日插值一下。時間複雜度為 \(O(n^2)\)

[AGC003C] BBuBBBlesort!

操作 \(2\) 就是任意排列下標同奇偶的元素。因此只需要看起始位置與結束位置的下標奇偶性是否不同即可,如果不同,貢獻 \(+1\)

P4345 [SHOI2015] 超能粒子炮·改

\(lucas\) 定理拆一下迴圈節即可。

P5376 [THUPC2019] 過河卒二

詐騙題。看出來答案是 \((n+1,m+1)\) 的方案數的話,容斥 + lucas 就做完了。

P2182 翻硬幣

很簡單的 dp。

P2487 [SDOI2011] 攔截導彈

線段樹 + CDQ 板子題。

P1600 [NOIP2016 提高組] 天天愛跑步

分討。dsu on tree 即可。

P5854 【模板】笛卡爾樹

每個節點有兩個權值 \(a,b\),一個要滿足二叉搜尋樹的性質,一個要滿足小根堆的性質。

\(a\) 排序(這題 \(a\) 就是它的編號,因此不用排序),利用單調棧維護一個右鏈即可。

P3959 [NOIP2017 提高組] 寶藏

顯然對於任意一棵樹,任意欽定一個點為根,把深度最深(記為 \(dep\))的點刪掉。剩下來深度最深的點的深度為 \(dep-1\)

因此可以記一個\(f_{s,i}\) 表示當前生成樹為 \(s\),深度最高為 \(i\),考慮對深度最深的點i加入新的點 \(i\) 由上述結論可以證明這樣做一定是對的。