本来已经写了不少,但又发现了前人造的质量上乘的轮子,就没有为难自己了。
以下文章均转载自 command-block 的洛谷博客。
本来已经写了不少,但又发现了前人造的质量上乘的轮子,就没有为难自己了。
以下文章均转载自 command-block 的洛谷博客。
中规中矩的一场模拟赛。
T1 写得实在是太久了……这也是没办法的事情——如果不对转移作压缩优化就没办法过。
T2 有我喜欢的马拉车 Manacher 算法,是印象里第二次在模拟赛应用。
然后就没时间了。后两题仍然只有暴力分,但最近频繁遇到跟凸包和线性函数相关的题目,这使我发现 T3 跟它相关。在最后一点时间里实现了构建凸包的函数。代码本身没问题,但思路是错误的。
这好像是很早以前的译名了。现在它叫《莉可丽丝》。
遇见多模式串匹配,自然想到自动机上 DP。但我们发现题目中给定的两个串 sakana
chinanago
在任何一个文本串中最多只能匹配其中一个,且匹配位置唯一。于是简单计数 DP 转移,记录当前二者匹配数之差与目前匹配位置即可。
一些不应用就过不了的优化:
?
s
c
a
o
还有其他字符分类讨论,保证单次转移复杂度为 。时间复杂度 。 (更多…)
自己东拼西凑手写了一个服务端渲染 (现在本站上的所有数学公式都在服务端渲染完成)的 WordPress 插件。确实有功能相近的轮子,但是跟我以前写的文章格式不相符,客户端渲染又不对我的胃口,我不想用。PHP 在 WP 上二次开发抓取页面内容,本机开另一端口让 node.js 监听,渲染好以后返回。
于是有开启、关闭异步进程的需求。原先采用 proc_open
,发送 POST 请求用 file_get_contents
,插件关闭时暴力 kill
服务端进程。发现 PHP 开子线程没有什么权限,所以被迫将标准输入输出重定向到 pipe。然后进一步改进成用 cURL 处理通用请求(这样就可以给服务端发送类似命令一样的东西,更优雅地检测监听状态和关闭进程),期间服务端加了不少调试信息,用 console.log
输出。然后爆炸了。
本来以为是处理 HTTP 请求的地方出锅,但最诡异的是我手动在远程控制台运行时没有任何问题,调试信息正常输出;但一旦用 PHP 自动开子线程启动,处理完最多两个请求之后就直接 defunct,重开一次爆炸一次。排查其他可能性之后怀疑是调试信息输出有问题。于是去掉若干 console.log
,正常运行。
Atcoder ARC149D – Simultaneous Sugoroku
官方题解做法是线性的,在此不再赘述。
考虑对于纸片 分别计算答案。每次暴力枚举显然不可取,但假若我们知晓对于 ,在 次操作以后纸片在数轴上的坐标 ,其中 是最小的取到 的位置,则对于 :
这是可以用区间树维护的:我们想要快速求出全局非正数最大值以及首次取到该最大值的位置,同时支持全局加 、后缀所有数符号翻转 ()。那么同时维护区间非负数最大值、正数最小值以及首次取到他们的位置,采用延迟标记更新(两种操作对于前述信息是具有结合律的,形成幺半群)即可。
时间复杂度 ,常数一般。