做题记录
冬训 3
H 角剖分剖角
根据打表可知 \(n\) 边形的 \(sg\) 值为 \(\lfloor \frac{n}{3} \rfloor\)
设第一步划分出来的三个子图点数分别为 \(u,v,w(u,v,w \ge 0 ; u+v+w=n-3)\) ,那么必胜的条件即为 \(\lfloor \frac{u}{3} \rfloor \oplus \lfloor \frac{v}{3} \rfloor \oplus \lfloor \frac{w}{3} \rfloor=0\)
接着对 \(u,v,w\) 对应的划分进行计数
-
三个均相同,方案数为 \(\frac{n}{3}\)
-
两个相同,方案数为 \(n\)
-
三个均不同,方案数为 \(2n\)
但这样算需钦定 \(u,v,w\) 的大小关系,不利于对这样的三元组计数。
考虑不限制 \(u,v,w\) 的大小关系,每一种划分的方案数均认为是 \(n\) ,最后每种方案恰好被计算了 \(3\) 次 , 最后将答案除以 \(3\) 即可。
现在处理 \(\lfloor \frac{u}{3} \rfloor \oplus \lfloor \frac{v}{3} \rfloor \oplus \lfloor \frac{w}{3} \rfloor=0\) 这个限制
令 \(u=3p+r_1,v=3q+r_2\) ,则上式等价于 $(p \oplus q) + (p + q) = \lfloor \frac{n-3-r_1-r_2}{3} \rfloor $
枚举 \(r_1,r_2\) , 右边为常数 \(R\) , 考虑 \((p,q)\) 每一位的取值
- \((p_i,q_i)=(0,0)\):该位为 \(0\)
- \((p_i,q_i)=(0,1)/(1,0)/(1,1)\) :该位为 \(0\) ,同时进位
故 \(R\) 二进制下每一个 \(1\) 只能由 \(3\) 种进位方法得到,方案数即为 \(3^{\text{popcount}(R)}\)
注意 \(R\) 为奇数时方案数为 \(0\)

浙公网安备 33010602011771号