首页 > 其他分享 >AtCoder Regular Contest 171

AtCoder Regular Contest 171

时间:2024-03-04 15:35:02浏览次数:20  
标签:AtCoder Contest text Regular 171 哈希 染色 dp


\[\large \text{Round 13 : AtCoder Regular Contest 171} \]

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

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

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

\(\text{D : Rolling Hash}\)

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

首先,看到要求是一段区间的哈希值不为 \(0\),我们考虑定义一个前缀哈希 \(s_i\),其实就是让你 \((s_{r+1}-s_l)\times b^? \not=0\),也就是 \(s_{r+1}\not=s_l\)。

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

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

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

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

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

最后看 \(dp[2^{n+1}-1]\) 是否小于等于 \(p\) 即可。

\(\text{Submission}\)

\(\text{What I learned}\)

  • 面对一段区间的哈希时,可以转化为 \((s_{r+1}-s_{l})\times b^?\),可能方便处理。

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

标签:AtCoder,Contest,text,Regular,171,哈希,染色,dp
From: https://www.cnblogs.com/SFsaltyfish/p/18051898

相关文章

  • AtCoder Beginner Contest 298
    \[\large\text{Round5:AtCoderBeginnerContest298(VP)}\]一言:成一事者,是失之不渝的愚者;毁一事者,是停滞不前的贤者。——不正经的魔法讲师\(\text{Ex:SumofMinofLength}\)这次比赛总体难度不是很大,可能也是我第一次自己独立做出\(\text{Ex}\)。(虽然不是场切......
  • AtCoder Beginner Contest 315
    \[\large\text{Round6:AtCoderBeginnerContest315}\]一言:愿悲、爱恋、你和宇宙以及那颗星辰,能够永远拥抱我们。——THEBEYOND-機動戦士ガンダム40周年纪念曲这场打的一般,主要还是一开始网卡爆了把心态弄得很不好,一定程度上影响了发挥。\(\text{G:Ai+Bj+Ck......
  • AtCoder Beginner Contest 310
    \[\large\text{Round8:AtCoderBeginnerContest310(VP)}\]一言:虚伪的眼泪,会伤害别人,虚伪的笑容,会伤害自己。——反叛的鲁鲁修\(\text{F}\)竟然没有第一时间想到状压,还是太蒟了。。\(\text{F:Make10Again}\)这题看到一个子集,再加上子集和的范围只需要考虑小于......
  • AtCoder Beginner Contest 313
    \[\large\text{Round2:AtCoderBeginnerContest313(VP)}\]一言:当我拔出第二把剑时,就是为了我所爱之人——刀剑神域这场比赛真的是大败而归,只A了\(A,B,C,E\)。。。虽然但是,\(F,G\)确实不可做,但是\(D\)题还是有点可惜了。\(\text{D:OddorEven}\)感觉考场......
  • AtCoder Beginner Contest 343
    AtCoderBeginnerContest343比赛链接A-WrongAnswer思路简单的模拟,事实上我们需要注意一下当a和b都为0的情况Code#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongvoidsolve(){ inta,b; cin>>a>>b; intans=a+b; //cout<<a+b-1<<en......
  • AtCoder Beginner Contest 343
    基本情况前四题秒了,但是都有不够优雅的地方F知道是线段树,但是写不出来,极其绝望C-343C-343(atcoder.jp)更简洁的回文判断MyCodeboolcheck_p(i64x){std::strings(std::to_string(x));intn=sz(s);for(inti=0;i<n/2;i++){if......
  • AtCoder Beginner Contest 343:起航
    AtCoderBeginnerContest343:起航2024/3/2/22:53有点儿晚了,简单总结一下。前4题都很基础,一点点小思维,其中C题边界又盲目追求刚刚好,WA了一次,总结经验,程序实际设计应该略微大于数据范围。EFG开始就做不动了,只剩了20多分钟,先通读然后看E题,E题读了半天发现大概是体积交并反......
  • AtCoder Beginner Contest 343
    B-AdjacencyMatrix难度:⭐题目大意给定一个无向图的邻接矩阵,问每个节点都和哪些节点相练;解题思路没啥好说的;神秘代码#include<bits/stdc++.h>#defineintlonglong#defineIOSios::sync_with_stdio(false);cin.tie(0);cout.tie(0);#defineendl'\n'......
  • AtCoder Beginner Contest 343(小白来了)
    A-WrongAnswer思路:给你两个数(A,B0~9)输出非A+B(0~9)解法:许多(A+B)^1等等Code:#include<iostream>usingnamespacestd;intmain(){intA,B;cin>>A>>B;cout<<!(A+B);return0;}B-AdjacencyMatrix思路......
  • AtCoder Beginner Contest 342
    B-Whichisahead?难度:⭐题目大意给定n个人的位置顺序,现有m次询问,给出a,b两个人,问谁在前面;解题思路模拟就行;神秘代码#include<bits/stdc++.h>#defineintlonglong#defineIOSios::sync_with_stdio(false);cin.tie(0);cout.tie(0);#defineendl......