真是快呀😰,不知不覺一個月就過了?還是那麼菜。
稍微整理一下這個月做的水題(不包含我寫過題解的題)。
P3964 [TJOI2013] 松鼠聚會
定義兩個點 \((x_{1},y_{1}) \ (x_{2},y_{2})\) 的切比雪夫距離為 \(\max(|x_{1}-x_{2}|,|y_{1}-y_{2}|)\)。
顯然原題就是在就求切比雪夫距離之和最小值。
先考慮將曼哈頓距離轉換:
那麼 \((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\) 由上述結論可以證明這樣做一定是對的。