CF1739F题解
摘要:每个串提供的信息是若干个相邻字符的限制,如果相邻字符连边,最后一定得到一条链,否则这个串不可能被表示出来。 得到的这条链相当于答案的一个子串,如果最后答案包含这个字串,那么就会有 \(c_i\) 的贡献。 由于有多个串,考虑建立AC自动机,把贡献累计到每个串对应的节点上,那么原问题就相当于把最后的排
阅读全文
posted @
2022-11-24 15:53
cool_tyl
阅读(12)
推荐(0)
CF1699D题解
摘要:考虑 \(dp\),设 \(f_i\) 表示考虑前 \(i\) 个数,且留在最后的数是 \(a_i\) 的最长长度。 转移就考虑枚举上一个位置 \(j\),满足 \(a_j=a_i\) 且 \([j+1,i-1]\) 这个区间的数,能被抵消,于是现在的问题就变成如何判断一个区间的数能否消完,类似摩尔
阅读全文
posted @
2022-11-21 15:35
cool_tyl
阅读(15)
推荐(0)
CF1693D题解
摘要:很妙的dp题。 首先肯定要想判断一个序列是否合法。 第一篇题解的结论太强了,蒟蒻只能想到dp。 设 \(dp_{i,0}\) 表示 \(a_i\) 作为上升段末尾时,下降段末尾的最大值。 \(dp_{i,1}\) 表示 \(a_i\) 作为下降段末尾时,上升段末尾的最小值。 起点:\(dp_{i,0
阅读全文
posted @
2022-11-20 20:10
cool_tyl
阅读(14)
推荐(0)
CF1648D题解
摘要:记 \(s_{i,j}\) 表示第 \(i\) 行前 \(j\) 列的价值和(即前缀和)。 之前模拟赛遇到过类似的线段覆盖问题,考虑 \(dp\),设 \(f_i\) 表示从 \((1,1)\) 走到 \((2,i)\) 且所选线段的右端点恰好覆盖到 \(i\) 的最大收益。 将所有线段按右端点排序
阅读全文
posted @
2022-11-14 19:43
cool_tyl
阅读(39)
推荐(1)
AGC036D题解
摘要:考虑把不存在负环转换为存在差分约束。 由于 \(i \rightarrow i+1\) 的 \(0\) 边不能删,因此有 \(x_i\geq x_{i+1}\),然后是经典操作,把大小限制转为差分,令 \(q_i=x_{i}-x_{i+1}\),那么这个限制就是 \(q_i\geq 0\)。 考虑保
阅读全文
posted @
2022-11-07 09:55
cool_tyl
阅读(26)
推荐(0)
CF1728G题解
摘要:看到 \(m\) 很小,可以想到状压或容斥。 状压比较困难,考虑容斥。 枚举没有被照亮的点的集合,记为 \(S\),\(f(S)\) 为其方案数。 \[ans=\sum_{S}(-1)^{|S|}f(S) \]考虑计算 \(f(S)\)。发现 \(S\) 里的点会把原区间划分为 \(|S|+1\)
阅读全文
posted @
2022-11-06 17:19
cool_tyl
阅读(27)
推荐(0)
CF1671F题解
摘要:首先,观察到逆序数很小,所以整个排列被移动的数很少,最多有 \(22\) 个数不在原来的位置上,从排列与逆序数关系上来看,因为一次交换意味着增加一个逆序对,所以最多对 \(22\) 个位置有影响。 这样那些位置不动的一段都不用考虑。 考虑将整个排列划分成这样的 “区间”分开考虑: \(p_l,p_{
阅读全文
posted @
2022-11-06 17:03
cool_tyl
阅读(9)
推荐(0)
CF1237F题解
摘要:首先简化问题,在 \(1\times n\) 的棋盘中放入 \(a\) 个单格牌和 \(b\) 个双格牌的方案数(有些位置禁止放)。 考虑 \(dp\),设 \(f_{i,j}\) 表示在前 \(i\) 个格子中放入 \(j\) 个 \(2\) 格牌的方案数。 转移:若 \(i\) 和 \(i-1\
阅读全文
posted @
2022-11-06 16:57
cool_tyl
阅读(25)
推荐(0)