游园会 - 经典 DP 套 DP
经典 DP 套 DP 问题及其多倍经验
经验 1:P4590 [TJOI2018] 游园会
经验 2:P10614 BZOJ3864 Hero meet devil
经验 3:ABC391G - Many LCS
强烈谴责 ABC 原题大赛。
题意#
定义 LCS 表示 Longest Common Subsequence,即最长公共子序列。
给定字符串
经验 1:字符集为 NOI
,要求 NOI
。
经验 2:字符集为 ACGT
。
经验 3:字符集为英文小写字母。
解法#
考虑 LCS 问题的经典 DP 做法:设
转移是
这样的转移产生了一个性质:对于确定的
由于第二维最大为
转移可以枚举下一个字符,是容易的。
并且转移只与
这样总复杂度是
心路历程#
刚开始先做的是 ABC 的题,WA 掉了,不知道为什么,感觉没问题。于是改了改交到游园会上面,游园会直接 WA 飞了,找了好久没发现问题。放了一段时间后,发现是如果新填入一个 N,我不会认为这是 NOI 的一个前缀,改了就 AC 了。
当时调试的时候在 LOJ 上面下载数据,就顺便交到 LOJ 上面了,没想到 WA 30。一样的代码,为什么结果不同呢?应该是有 UB。本地测试没有问题,Ubuntu 环境下也没问题,GMOJ 上面测试发现不开 O2 没问题,开了 O2 有问题。铁定是 UB 了。但是 UB 在哪呢?
原来我把字符串数组恰好开了字符串长度,导致最后终止符号 '\0'
越界了。
那么 ABC 的题过不了想必也是这个问题了,改掉之后果然过了。
松了一口气,应该最后一道经验题很快能拿下了。改完之后发现 TLE 了。这么慢的吗?本地造了一组数据完全没压力啊。遂去 VJ 上面试图寻找别的 OJ 试一试。找到 HDU,时限 8s,洛谷仅 3s。交了一下仍然 TLE,找了一个火车头,结果 WA 了。我真是越来越懵了。
后来看了一下题解,发现我的复杂度多了一个 cerr
:在 HDU 上面标准错误流和标准输出流会混杂到一起。这就导致我 WA 了。至此所有经验题做完。
都怪 UB,一直对拍都拍不出来。
作者:Terminator-Line
出处:https://www.cnblogs.com/Terminator-Line/p/18701727
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话