好题,为良心出题银点赞!
Xiejiadong edited 4 年,2 月前
# | Tag | Idea | Developer | Tester |
---|---|---|---|---|
A | 模拟 | Xiejiadong | Xiejiadong | 10185101232 Grunt |
B | 数学 暴力 哈希 | Xiejiadong | Xiejiadong | 10185101232 Grunt |
C | 组合数学 | Grunt | Grunt | 10185101232 Xiejiadong |
D | 简单多项式计算 | Xiejiadong | Xiejiadong | 10185101232 Grunt |
E | 筛法 | Weaver_zhu | Weaver_zhu | 10185101232 |
签到题。
特意固定了
如果按照字典序的顺序对每一个字母进行
根据给出的
Xiejiadong :如果转换成了进制转换的模型,根本不会出线乘法运算,所以也不可能会出现爆 long long 之类的问题。
首先可以发现的是
首先我们考虑等价类的划分问题。
如果我们认为相同的字母都属于同一个容器的话,那么相当于把最多
我们知道
也就是说,等价类划分的关系,最多只有
对于已经确定的等价类划分,我们现在需要做的无非就是判断有多少个字符串是等价的。
这部分可以通过字符串 Hash 来实现,直接暴力的字符串 Hash 需要每一次重新计算每一个字符串对应的 Hash 值,是无法通过这道题的。
因为这里最多只有
因为每一次都是不同字母之间的全部替换,所以这样每一次计算每一个字符串 Hash 的代价变成了
Xiejiadong :一开始的 idea 是想做所有字母映射的等价。想了很久发现自己不会做。后来发现字母集改小就可以做了,而且似乎思路挺妙的。
oxx1108 : 感觉这个得和出题人心灵相通才能做吧。
Xiejiadong :那我时限放宽一些,看看有没有各种不同的方法卡过去。
链的版本
注意到题面要求的其实是一个”环的版本”,正常想法是先给出“链的版本”的做法,即去掉“
将
因为禁止相邻对,所以禁止一个偶对后面紧跟着一个奇对。已知有
$$
\left{
\right.
$$
显然两个方程是独立的,
环的版本
记环的版本的答案为
容斥,显然
Double counting,从两个方向数有序对
注意特判边界情况。
Grunt :本题出自笔者修的一门组合数学课的课后作业,感觉这个问题和做法都很有意思,就稍微加强了下,搬运过来。
比较简单的多项式运算。
假设特殊点的权值分别是
我们把边氛围分为三类:
于是我们可以通过总的边权减去非特殊点之间的边权得到。
总的边权
于是,通过计算所有点权的和以及平方和就可以得到总的边权。
非特殊点与非特殊点之间的边的边权
与上面类似
剩下的问题就是计算原本环上存在边的边权。直接枚举环上的每一条边是否属于非特殊点与非特殊点之间的边,如果是则加上这条边的边权,否则已经存在则不再做计算。
先考虑莫比乌斯反演
我们要求的
幂方和可以用伯努利数预处理
其余用上数论分块和杜教筛求
复杂度
Weaver_zhu :很没意思的一道题,和多校的一道题套路也重的比较多。
Xiejiadong :两个月前的月赛囤下来的题目。由于没有什么好的 idea 所以就放上来了。
蟹蟹支持 刘队nb