From 53d14446a0e163efa1e5d887bd75eeff12a738ca Mon Sep 17 00:00:00 2001 From: hanyixuanten <105723997+hanyixuanten@users.noreply.github.com> Date: Wed, 16 Sep 2026 18:26:49 +0800 Subject: [PATCH] renamed: P13366.md -> solutions/P13366.md --- .gitignore | 3 ++- P13366.md => solutions/P13366.md | 38 +++++++++----------------------- 2 files changed, 12 insertions(+), 29 deletions(-) rename P13366.md => solutions/P13366.md (74%) diff --git a/.gitignore b/.gitignore index 85625c7..0d66f14 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ !*.cpp !.gitignore !README.md -!*.md +!solutions +!solutions/*.md !clean.sh tmp.md \ No newline at end of file diff --git a/P13366.md b/solutions/P13366.md similarity index 74% rename from P13366.md rename to solutions/P13366.md index df9dbbc..bcb17cb 100644 --- a/P13366.md +++ b/solutions/P13366.md @@ -1,6 +1,4 @@ -# P13366 [GCJ 2011 #1A] The Killer Word 题解 - -参考了 [官方pdf题解](https://www.luogu.com.cn/fe/api/problem/downloadAttachment/zsdw8913) +参考了[官方pdf题解](https://www.luogu.com.cn/fe/api/problem/downloadAttachment/zsdw8913)。 ## 思路 @@ -20,38 +18,26 @@ 对于每个长度,初始时将所有该长度的单词放入同一个候选组。 -一个候选组表示: - -> 在已经猜过的字母及其反馈下,Sean 仍然无法区分的所有单词。 +一个候选组表示在已经猜过的字母及其反馈下,Sean 仍然无法区分的所有单词。 对于某个字母,使用一个二进制表示它在单词中出现的位置。 -例如: - -- 单词 `banana` -- 字母 `a` -- `a` 出现在第 $1,3,5$ 位(下标从 $0$ 开始) - -则对应二进制为: - -$$ -0101010_2 -$$ +例如对于单词 banana 和字母 a,对应二进制为 $101010_2$。 两个单词对于当前字母得到相同编码,当且仅当 Sean 从黑板上看到的反馈相同,因此它们应被分到同一个新候选组中。 ## 转移过程 -对于一张字母表 `L`: +对于一张字母表 L。 1. 按单词长度初始化候选组。 -2. 按 `L` 中的顺序枚举每个字母。 -3. 对每个当前候选组: +2. 按 L 中的顺序枚举每个字母。 +3. 对每个当前候选组。 - 若组内只剩一个单词,Sean 已经确定答案,不再需要处理该组。 - 计算组内每个单词对当前字母的出现位置二进制表示。 - 若所有二进制表示均为 $0$,说明没有候选单词包含该字母,Sean 会跳过该字母,候选组保持不变。 - - 否则,Sean 会猜该字母: - - 二进制为 $0$ 的单词不含该字母,对这些单词的失分加一; + - 否则,Sean 会猜该字母。 + - 二进制为 $0$ 的单词不含该字母,对这些单词的失分加一。 - 按二进制表示将原候选组拆分为多个新候选组。 4. 所有字母处理结束后,选择失分最多的单词。 5. 若失分相同,保留字典中下标较小的单词即可满足题目的平局规则。 @@ -60,10 +46,6 @@ $$ 单词长度最大为 $10$,字母表长度固定为 $26$。 -对于每一张字母表,每个单词最多参与 $26$ 次分组,每次计算位置二进制表示需要 $O(10)$。 +对于每一张字母表,每个单词最多参与 $26$ 次分组,每次计算位置二进制表示。 -因此总时间复杂度为: - -$$ -O(M \times 26 \times N \times 10)=O(NM) -$$ +因此总时间复杂度为 $O(NM)$,可以通过本题。 \ No newline at end of file