字符串

又来了,要不然差临门一脚要不然是编译器出锅悬置指针导致了看似非常不合理的 undefined behavior。这已经不是简单的 frustration 了,要是考场上遇到这种根本没办法查出来的语言相关问题,不就三年 OI 一场空了么?

不过,正是因为考试前从没“用过”悬置指针,才会诱发这样的问题。这再次提醒我们,考场上千万不要使用不熟悉的语法糖,使用平时经大量验证的写法,纵使排版稍欠美观、或代码量增长少许,也是稳定而完备的。

不得不说,这几场“主题模拟赛”的题面中,唯这一场是最上心的。既将足球相关术语用平易近人的方式融合进题面里,又不使其过分冗长而消磨选手耐心。 (更多…)

More
  • 2023年1月23日

CodeForces CF356E – Xenia and String Problem

这是一种不需要任何数据结构和处理字符串的工具,但细节繁多的做法。

设全串为 s1ns_{1\dots n}。不难发现,Gray string 的串长必然是 2w1(w1)2^w-1\quad (w\geq 1) 的形式。若其长为 2w12^w-1,我们称其为 w1w-1 阶 Gray string。

同时用归纳法可以证明,设一个 ww 阶 Gray string 的起始位置为 x+1x+1(其终到位置为 x+2w+1x+2^{w+1}),那么必然有 k{0,1,,w},sx+2k=sx+2k+2k+1=sx+2k+2×2k+1==sx+2k+(2wk1)2k+1i,j,0i<jw,sx+2isx+2j \forall k\in\{0,1,\cdots,w\},s_{x+2^k}=s_{x+2^k+2^{k+1}}=s_{x+2^k+2\times 2^{k+1}}=\cdots=s_{x+2^k+(2^{w-k}-1)2^{k+1}}\\ \forall i,j,0\leq i<j\leq w,s_{x+2^i}\neq s_{x+2^j} 成立。例如一个 33 阶 Gray string 可以被描述为 abacabadabacaba\mathtt{abacabadabacaba}(更多…)

More
  • 2023年1月5日

中规中矩的一场模拟赛。

T1 写得实在是太久了……这也是没办法的事情——如果不对转移作压缩优化就没办法过。

T2 有我喜欢的马拉车 Manacher 算法,是印象里第二次在模拟赛应用。

然后就没时间了。后两题仍然只有暴力分,但最近频繁遇到跟凸包和线性函数相关的题目,这使我发现 T3 跟它相关。在最后一点时间里实现了构建凸包的函数。代码本身没问题,但思路是错误的。

简略题解

A – 石蒜反冲

这好像是很早以前的译名了。现在它叫《莉可丽丝》。

遇见多模式串匹配,自然想到自动机上 DP。但我们发现题目中给定的两个串 sakana chinanago 在任何一个文本串中最多只能匹配其中一个,且匹配位置唯一。于是简单计数 DP 转移,记录当前二者匹配数之差与目前匹配位置即可。

一些不应用就过不了的优化:

  • 二者数量之差可只记录到 n15\frac{n}{15}1515 是两个串的总长度。
  • 转移时对于 ? s c a o 还有其他字符分类讨论,保证单次转移复杂度为 O(1)\newcommand\bigO{\operatorname{O}}\bigO(1)

时间复杂度 O(n2)\bigO(n^2)(更多…)

More
  • 2022年11月16日