数学
题意简述
给定不含重边的有向图 ,设其邻接矩阵为 ,定义其元素的“加”为逻辑或,“乘”为逻辑与。问 在何时出现循环节(),以及最小循环节长度 (即,, 均最小)。
题意转化
在原图上,从 出发,可用恰 步走到 ,则在 次迭代后的图上有有向边 。问最少迭代多少次后图的形态出现循环节。
强连通图的所有环环长的最大公约数
任意找一点 ,只需考虑经过 的所有环。
考虑有一不经过 的环,其长为 ;另有一经过所有点的环(本图强连通),其长为 。则有 。
我们任意找一棵本图的搜索树。设其根为 。设节点 的深度为 。设某经过 的有限长度的环依次经过了非树边(横叉边、返祖边) 。那么其环长在答案中可以被 取代。
可得 一定是 的祖先。我们删去 ,得到另一个环;这环与原来环的长度差为 。这两环均在答案中作出贡献;又由于 ,则我们将原来的环长等价替换为两个数:其一即 ,其二为现在的环长。再继续删除 ,便等价地换为 个数。
因此我们遍历一遍搜索树,就可以在 的时间内求出所有环环长之 。 (更多…)
我们有非常易于理解的暴力解法:直接对于 ,求出所有可以当作底数的 ,计算 后放入数据结构/排序去重;特别处理 的情况即可。在此不再赘述。
不过,我们注意到若有正整数 ,满足 ,且 (即底数 不可再开根),那么 。这意味着假如不去重地暴力添加 到答案中,上文中 将被算 次。
于是这就变成莫反的模板题了:记 表示“能被 表出的 之数量”, 表示“恰能被 表出,不可被 表出的 的数量”。易得 ,故 。显然,当 时仅有 满足 ,故我们只需计算 个 ,最后特判 。预处理出 的值,暴力求取反演式,复杂度为 。
其实并不需要这么麻烦。我们根本不需要反演:根据 ,假若 都已经计算完成,那么我们直接得到 。由 从大往小计算即可,复杂度相同。
AGC058D – Yet Another ABC String
将 换成 。记 是题面中 的数量,。我们称位置 不合法,当且仅当 。将其视为两条边 ,那么所有不合法的位置造成的连边将会形成若干条链。
考虑容斥。直接钦定指定数量的位置不合法,其方案是难以计算的。又因为容斥系数是 , 为钦定的非法位置数量,那么将整个串分成若干个部分分别计算方案,带上容斥系数相乘后累加,结果不变。故而尝试从上文的链入手:易得对于固定长度的一条链,能够连成它的非法位置集合不变。设 表示“大小为偶数,且能够连成长度恰为 的链”的非法位置集合数量; 则是大小为奇数。染色方案与位置集合方案是独立的;则设整个串按顺序被分成了链 (此处的“链”长度均不小于 ),答案即为 (更多…)