随机浏览
idea by GeZhiyuan, solution by GeZhiyuan, shr, std by shr, data by GeZhiyuan
算法 I
考虑必定是存在一些页面,如果到达了这些页面,就回到页面
算法 II
考虑假设
通过精细卡常可能能通过
算法 III
考虑先强制让所有页面都不会按红色按钮,然后记
算法 IV
考虑利用动态高斯消元优化 算法 III,复杂度
动态高斯消元的方法可以参考 [集训队互测2015] 最大异或和 的题解。
数字生命
idea by dead_X, solution, std by zhoukangyang, data by zhoukangyang, Rainbow_sjy
小故事
这题是三年前 dead_X 看错一道题后给我报的题意。听完题后我很快就想出了做法!而且感觉这个做法很趣味!之前没怎么见到过这种思路!
后来又在其他题/博客里面发现了这类做法,感觉有点错!但查询了一些选手的看法,他们认为即使见过这些也不简单!
WC2025 中我自己又讲了相关的内容,就当是抹平技术差距了(雾)
算法一
首先,我们差分
一次操作就是将
此时我们可以将问题看成是,第
容易发现,起点个数等于终点个数,且如果想要有解,则最多只会有
根据这个转化,我们可以写出 DP:从往后加入起点,记录此时已经匹配的终点和使用的操作。维护这个 DP 大约要
根据算法的复杂度和减枝程度,可以获得
算法二
设
而我们想要求的是
注意到我们其实并不关心每个排列带的系数是什么,所以我们要求的也可以是
这就是一个对集合幂级数求 det 的问题了。但是如果使用子集卷积,复杂度带的
我们发现我们可以直接使用或卷积。因为如果或卷积中有重的元素了,那么我们使用的操作的子集和一定和原序列的总和对不上,因此只需再对总和做限制即可。
算答案的每个点值需要
人机验证
idea by xyf007, data, std by zhoukangyang, solution by zhoukangyang, EntropyIncreaser
小故事
这是 NOI2023 后的暑假时给出的做法。
当时 xyf007 找我问这个题。我看了一下发现就是求带深度限制的有根树计数,然后思考了一下,发现有些困难。感觉这是典题,所以咨询了 EI,EI 告诉我他也很好奇这题能不能做。
而 xyf007 告诉我这题能做,而且我之前说出过正确做法。我隐约感觉有些印象,就又开始思考这个问题。断断续续想了几天,我终于想出了一个低于平方的做法!而这题之前的做法并不正确。我把这个做法告诉了 EI,EI 提出用特征多项式优化的做法,能做到
近几天准备这道题的时候,我重新思考了一下这个问题,发现有了快速的多项式复合后又有另一种
题解
显然,问题的难点在于求
首先容斥,钦定一些元素的深度恰好为
真实的树就是在每个”虚树“上的点上长出一颗新的树,所以答案只和虚树上的点数有关。
可以据此写出一个看起来没啥变化的 DP 来统计虚树上的点数:
求出
接下来我们考虑另一种 DP:
设
从
注意到
此时考虑如何用
注意到第二维大小不大,因此可以考虑矩阵快速幂。如果直接使用矩阵快速幂,需要对一个
接下来有两种做法。
做法1
把整个矩阵记下来很浪费。考虑设
接下来考虑如何"翻倍",即
使用
因此复杂度是
做法2
这个转移矩阵是对角矩阵,有特征多项式
由于
考虑倍增计算