这次的题目背景大部分是vfleaking写的。
出题人 01,02,03 只是主人公的名字,和真实出题人没有任何的关系。
同构判定鸭
from Picks,标程 by Aprilgrimoire,数据、题解 by zhouyuyang 和 vfleaking。
算法0
这题好不可做啊!
交个简单的代码跑路吧:
print 'Same'
期望得分:
算法1
我会爆搜!
在wc上学了高超的搜索技巧感觉充满了力量!
期望得分:
算法2
对于 DAG 的情况,显然若存在坏串则坏串长度不超过
适当选取一种对字符串集合的哈希函数之后,我们就可以对于每一个结点
输出字典序最小的最短坏串可以通过按位贪心来实现。
时间复杂度
期望得分:
算法3
DAG 的情况启发我们去思考:如果存在坏串,那么最短的坏串长度是否比较短呢?
注意如果不是比较短的话,题目也不会让我们输出方案的。不然岂不是出题人亲自邀请大家炸测评机?
实际上我们确实能证出如下结论:
结论:如果存在坏串,则最短的坏串长度不超过
证明是这样的。首先我们可以把
仔细分析递推式可以发现这是个线性的递推式,且相同的
现在我们令
下面要用到一点点向量空间的概念。对于一个行向量集合
对于一个行向量集合
根据定义,
这里要用到向量空间的维数的概念。直观上一个向量空间
显然,
细节不太清楚的可以去找本自己看得懂的线性代数教材瞧瞧向量空间的具体定义。不知道是否有不依赖于线性代数的证明,如果有的话欢迎分享下咯。
回到算法上来。现在我们知道了,如果对于所有长度不超过
因此可以通过哈希确定坏串最短长度后即可按位确定答案。
时间复杂度
期望得分:
我和算法3一样为什么我挂掉了
你的哈希函数
Aprilgrimoire 在验题的时候加了一个extest把这种情况干掉了
一些正确的哈希姿势
例如从后往前数,位于不同位置的相同字符有着不同的哈希值。字符串的哈希值就是字符哈希值的乘积,多串的哈希值是每个串哈希值的和。
另一种方法是把字符串的哈希值设为
还有一种方法是把哈希值设成矩阵的形式,例如每个字符都对应一个
OIer 当然可以使用反正法说明哈希的正确率:“反正哈希正确率很高!” 但我们这里还是分析一下第一种方法。
第一种方法即事先随机出
现在我们将
因此就是要看看两个多项式不相等,但随机一组
对于本题,大家当然会在模一个素数
但这个失败概率仅仅是做一次“用哈希值相等来判断两个字符串集合相等”的失败概率。算法中我们要枚举长度,还要按位贪心,所以大概要做
对这个问题有兴趣的同学可以搜一下 Polynomial Identity Testing (PIT) 学习一波。
Bonus
如果要求严格字典序最小,能否证明在存在严格字典序最小的情况下,答案串长度是否有限?若有限,答案串长度是否存在上界?
己酸集合
from zhouyuyang,数据、标程、题解 by zhouyuyang。
把题目名字的拼音拿出来,JiSuanJiHe,这提示了这是一道计(Ji)算(Suan)几(Ji)何(He)题。
算法0
我会暴力!
每次询问暴力计算答案!
期望得分
如果利用算法
算法1
我会KD-Tree!
随机数据KD-Tree的复杂度看上去很真实。
极端情况下会被卡到
事实证明KDT是一个死掉的算法。
期望得分:
算法2
我会写方程!
写出圆方程
移项得到
如果我们把
维护斜率固定时的点的相对顺序,每次询问二分即可。
时间复杂度
期望得分:
算法3
欸
欸能不能把
如果按照分块的思路去维护,设把点序列分成
取
期望得分:
我和算法3一样为什么我又挂掉了
坐标范围是
出题人没有说过点集互不相同,公告里也更新过了,所以对于相同点要又高超的处理技巧。
可能将点坐标转换后会出现三点共线,同时sort是不稳定排序,因此需要一些小技巧处理这种情况。
挑战哈密顿
from peehs_moorhsum,数据、标程、题解 by peehs_moorhsum。
算法0
我会暴力!
暴力搜索哈密顿路径,或者状压DP,可以通过前两个点。
期望得分
算法1
第三个点是
可以对于每个分量搜任两点之间有没有哈密顿路。
期望得分
算法2
第五个点到第十个点是在一条链上随机加边生成的。
有各种乱搞姿势,看起来能在这些点获得10~57分不等
结合算法1,可以获得50~97分
算法3
接下来是标算。
维护边的一个尽量大的子集,满足只考虑这些边时每个点出入度都不超过1,且不构成圈。
如果子集大小达到
考虑调整维护子集。按随机顺序考虑边,如果加入后不构成圈,且加入之后所有点度数均仍合法,则加入这条边。
否则如果不构成圈,但有一个点度数不合法,则以一半概率加入并把该点相连的与新加入边矛盾的边断掉。
用最暴力的方法实现,也能总用时在10秒左右跑出前9个点,10分钟左右跑出最后一个点。
期望得分:
如果利用LCT维护是否构成圈,能够快很多。但出题人因为太懒,并没有写
一些彩蛋
关于有向图哈密顿链,似乎是有不少论文的。
验题人实现了其中一些,发现都是反向优化没有很好的表现。
所以欢迎吊打论文的大家在题解区交流做法ww
另:这道题主角真的是03