# 纸老虎序列 ## 解法与署名 首选出题人的“共享后缀”存储方法,程序为 [std.cpp](std.cpp)。Codex(GPT-6)按输入轮数分配长度表,精确分配最终字符区,并整理循环复制的边界。 [分段回溯与有界缓存](solution-alternative.zh.md)提供占用更少字符存储的并列方案,程序为 [alternative.cpp](alternative.cpp)。共享后缀保证构造的线性时间;回溯方案用少量缓存换取额外的区间分解,按需要选用。 ## 所有版本共用一个后缀 每轮只在前面添加字符,所以 $S_i$ 是 $S_{i+1}$ 的后缀,进而是最终字符串 $S_N$ 的后缀。记 $L_i=|S_i|$ ,先按 $$L_i=L_{i-1}+\left\lceil\frac{L_{i-1}}5\right\rceil$$ 计算全部长度。分配长度为 $L_N$ 的字符数组,把初始串放在区间 $[L_N-L_0,L_N)$ .此后第 $i$ 个版本始终位于 $[L_N-L_i,L_N)$ ,无需保存各版本副本。 ## 增长时的复制 设增长前版本起点为 $b$、长度为 $L$ ,新增长度为 $D$ .依次写入 $$\mathrm{Text}[b-D+k]=\mathrm{Text}[b+(p_i+k)\bmod L],\qquad 0\le k --std ``` 省略 `--std` 仅生成输入;`--case 01` 选择指定用例。小规模独立验证见 [check_r16.py](../../../tools/check_r16.py),范围校验见 [validate_r16.py](../../../tools/validate_r16.py)。五轮时间、内存、输入和程序哈希见[测量记录](../../../docs/benchmark-R16.json)。环境与校准方法见[评测说明](../../../docs/评测环境与性能.md)。 ## 实测结果 Intel Core Ultra 9 275HX、Windows 11、GCC 16.2.0、C++17 -O2。两份程序在相同十份正式输入上交替运行五轮。时间取每个用例中位数的最大值,包含启动与输入输出;峰值工作集独立测量,包含运行时开销。 | 程序与算法 | 最慢中位数(秒) | 峰值(MiB) | 0.5 秒参考时限 | | --- | ---: | ---: | --- | | [共享后缀](std.cpp) | 0.070396 | 9.04 | 已测输入通过 | | [分段回溯与有界缓存](alternative.cpp) | 0.069889 | 5.36 | 已测输入通过 | 时限由标程最慢中位数乘以 2,向上取整到 0.5 秒得到。原始轮次、输入、源码和程序哈希见[测量记录](../../../docs/benchmark-R16.json)。其他评测机需重新校准;这些测量只描述随附实现及已测输入。