AtCoder Regular Contest 171


Round 13 : AtCoder Regular Contest 171

一言:
我并不是要失去自由,而是要去收获那无可替代的不自由。
——SSSS.电光机王

几年没写了,但是我们仍然要捡回来!

没啥好写的,T1,T2能力范围之内,T3不会,T4感觉很好,但是没做出来。

D : Rolling Hash

这题无论是对 Hash 的转化,还是转化后染色问题的状压想法,都是非常重要的。

首先,看到要求是一段区间的哈希值不为 0,我们考虑定义一个前缀哈希 si,其实就是让你 (sr+1sl)×b?0,也就是 sr+1sl

然后由于 siai 本质上是可以做到一一对应的,所以我们看可不可以构造出一个合法的 s 即可。

然后这题就转化为:有一个点数量为 n+1 的图和 m 条边,现可以用 [0,p] 中的任意整数对图上的点进行染色,要求图上边上的两点颜色不同,问有无合法方案。

接下来就是我确实觉得只能用“技巧”来形容的地方:

我们定义 dpS 表示对所有在 S 集合中的点进行合法的染色之后,所需要的最少颜色数量。

显然,我们在染色时,只能对一个独立集进行染色,所以我们考虑枚举 T,满足其是 S 的子集,且是个独立集,然后有 dpS=min{dpS,dpT+1}

最后看 dp[2n+11] 是否小于等于 p 即可。

Submission

What I learned

  • 面对一段区间的哈希时,可以转化为 (sr+1sl)×b?,可能方便处理。

  • 面对染色问题,一定想到状态压缩,以及二分图中的一些概念。

posted @   Saltyfish6  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
Document
点击右上角即可分享
微信分享提示