thumbnail
This is Melo
这里用于记录我想记录的任何东西。
thumbnail
分治乘法解决位运算卷积
位运算卷积指,给定两个长度为 $n$ 的数组 $a,b$,0-index,求数组 $c=a*b$ 满足 $c_k=\displaystyle\sum_{i\otimes j=k}a_i\times b_j$,其中 $\otimes$ 表示一种位运算。 分治乘法解决此类问题的思想是,对于任意一种位运算而言,不同的位之间互不影响,所以可以通过某种方式去…
thumbnail
经典问题:求出有向图中经过某个点的所有环环长的 gcd
题目是 AT_abc306_g [ABC306G] Return to 1 - 洛谷。 以下所有叙述均不考虑自环、重边。 上题本质上要求求出所有经过点 $1$ 的环环长的 gcd。 首先把包含点 $1$ 的强连通分量拿出来,显然只用考虑这个子图即可。 接下来考虑以 $1$ 为根建立任意一棵 dfs 搜索树,我们不加证明地给出一个断言:答案等于 $\…
thumbnail
好题合集
散题 换根 DP: P3647 [APIO2014] 连珠线 - 洛谷 P2081 [NOI2012] 迷失游乐园 - 洛谷 树形 DP: AT_abc340_g [ABC340G] Leaf Color - 洛谷 P4253 [SCOI2015] 小凸玩密室 - 洛谷 P3687 [ZJOI2017] 仙人掌 - 洛谷 AT_agc034_e […
每日学习(常见 trick 之变换坐标轴)

典题是 AT_abc221_g [ABC221G] Jumping sequence – 洛谷

另一个典题 AT_abc240_g [ABC240G] Teleporting Takahashi – 洛谷

本题中,题面要求我们解决两个事情:决策 $D_i$ 分配给横坐标还是纵坐标,以及加还是减。

这个显然是不好做的,这就可以引出一种常见 trick。

考虑把 $(X,Y)\to(X+Y,X-Y)$,这显然是一个双射,我们可以发现原来的操作变成了:

  • 向上:$(X,Y)\to(X+D,Y-D)$
  • 向下:$(X,Y)\to(X-D,Y+D)$
  • 向左:$(X,Y)\to(X-D,Y-D)$
  • 向右:$(X,Y)\to(X+D,Y+D)$

容易发现这样我们不再需要决策 $D_i$ 分配给谁,同时横纵坐标对于每个 $D_i$ 而言的加减情况完全独立,只需要分开解决即可,显然可以使用 bitset 优化背包。

事实上,$(X,Y)\to(X+Y,X-Y)$ 是一种经典的 trick(在曼哈顿与切比雪夫的互相转化中亦有记载),他的本质是通过把横纵坐标结合起来减少限制,当发现题目中横纵坐标互相限制时,可以尝试使用此技巧。

515 日 , 2026 15:31
每日学习(二选一模型)

当具有多个限制,每个限制形如在两个东西中选择一个,常见做法是在这两个东西之间连边,然后把限制转化到图上做。

512 日 , 2026 10:37
thumbnail
Krawtchouk 多项式线性递推公式推导
Krawtchouk 多项式定义为: $$ K_w(k,n)=\sum_{p=0}^{w}(-1)^p{k\choose p}{n-k\choose w-p}$$ 一个等价形式是 $$(1-x)^k(1+x)^{n-k}=\sum_{w=0}^{n}K_w(k,n)x^w$$ 线性递推公式指的是给定 $n,k$,可以在 $\Theta(n)$ 时间…
每日学习(无根树转有根树计数)

对于无根树计数,常常通过钦定重心为根的方式转化为有根树计数,但是有时可能需要对某棵树有两个重心的情况去重。

122 日 , 2026 14:12
每日学习(BST 的充要条件)

一棵树是 BST 的充要条件是按照中序遍历的顺序写出权值序列后,这个序列单调不降。

122 日 , 2026 14:01
每日学习(无根树路径性质)

对于无根树上任意两点之间的路径,一定可以在以某个叶子为根的时候变成一条祖先到后代的链。

122 日 , 2026 14:00
每日学习(SAM)

建 SAM 的时候有一个 lst 变量,表示的是以当前枚举完的前缀为等价类中最长串的等价类的编号。

120 日 , 2026 17:50