3 月水题练习

真是快呀😰,不知不觉一个月就过了?还是那么菜。

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\) 由上述结论可以证明这样做一定是对的。

posted @ 2024-04-01 20:06  小超手123  阅读(5)  评论(0编辑  收藏  举报