2.5 響け恋の歌 ——ARC107~109

我猜是小小恋歌赞助了这个系列!

由于懒得再把细节回想一遍所以会比较概括。但是总体做法保真。

ARC107

D Number of Multisets

考虑 DP:\(f(i,j)\) 表示 \(i\) 个数凑成 \(j\) 的方案数。那么我们可以枚举最大数的幂次,容易发现只是 \(O(\log n)\) 的。然后枚举了之后发现是一个类似 \(f(i-p,j-2p)\) 形式的求和,维护一下即可。

E Mex Mat

打表发现对于 \(n>4\) 的部分,满足斜对角一定相等。结束了。

F Sum of Abs

如果 \(a=0\) 那么就是简单的二分图问题,可以跑个最小割。那么有 \(a\) 同样考虑最小割模型。考虑每个点有几种状态:被删掉,不被删掉但处于敌方连通块(贡献取负),贡献取正。于是我们考虑直接套用切糕模型就好了。

ARC108

D AB

详见《2.2 如何把一道简单思维题变难》。进行一些分类讨论发现,发现形式很固定。

E Random IS

考虑朴素的 DP,\(f(l,r,x,y)\) 表示 \([l,r]\) 区间,限制选的数处于 \([x,y]\)。但是容易发现有用的 \((x,y)\) 一定等于 \((a_{l-1},a_{r+1})\)。转移的时候注意到是一个二维数点的形式,BIT 优化即可。

F Paint Tree

考虑直径。如果直径两端点同色那么结束了。显然最终最长路径必然有一个点在直径上。我们考虑对于每个 \(i\) 求出答案 \(\ge i\) 的方案数,加起来就是总答案。根据到两个端点的距离是否 \(<i\) 分为 \(4\) 类,计算染色方案即可。求这个每类点的个数大概就差分然后扫一下。

ARC109

D L

我觉得官方题解很 L。我们把所有上面曾经有过棋子的点画出来,容易知道总数量减去 3 就是操作步数,因为肯定不会重复走。然后我们注意到正常情况下,比如行的差比较大,那么就是每列两个这样不断往右走,答案就是两倍的行差,然后加减初始&终点位置的可能有个加一减一。但是如果行列差一样大,那么就会有更加特殊一点的加一减一。然后在这种特殊情况中,还要特判掉 \((0,1),(1,1),(1,0)\) 这种的更特殊情况。

E 1D Reversi Builder

注意到题面要求的是每次只能在相邻的选,所以如果首尾相同那么就一定全相同了,否则至少每一方都能保住自己的在首尾的连通块。然后注意到 \(s\) 离哪一方近,其对面就能优先抢到连通块外的那一个格子,就可以控制剩下的那些颜色。由于如果首尾连通块大小不同,我们交换先后手得到的结果是对称的,就不重要了。所以我们只需要考虑首尾连通块大小相同的情况。然后就列个式算就行了。

F 1D Kingdom Builder

考虑从后往前考虑操作。每次随便删连通块的边缘点,然后一个块最后一个点删掉的时候需要保证其余联通块周边的点与其不同色。然后我们删掉这个连通块 X 后,假设其最后一个点为颜色 \(x\),那么其余的任何含有 \(x\) 的连通块其实也就可以一起删掉了,设其为 Y 类连通块。最后只能最多剩下一个连通块 Z,其中没有 \(x\)。考虑 XYZ 的限制。X 要有 \(x\),Y(包括相邻的块)要有 \(\overline{x}x\overline{x}\) 子序列,Z(包括相邻的块)要有 \(\overline{x}\overline{x}\) 子序列。DP 的时候处理出产生 X Y Z 段的最小左端点然后维护 \(\min f_{i,0/1,0/1}-i\) 即可。

posted @ 2024-02-05 23:09  LarsWerner  阅读(17)  评论(0编辑  收藏  举报