[{"content":"《超かぐや姫》Blu-Ray 特装典藏版 Special Booklet 个人中文翻译 注1：蓝光碟均为本人自购，本人日语水平有限所以部分校对还是交给Claude了。\n注2：歌词都没有翻译，本人日语水平还不足以想到很好的方法在不破坏分行的情况下翻译。\n翻译：AkiChannnnn\n校对：AkiChannnnn, Claude Opus 5.5\n嵌字： ChatGPT GPT-6.1 Sol\n","date":"2026-10-19","summary":"《超かぐや姫》Blu-Ray 特装典藏版 Special Booklet 个人中文翻译 注1：蓝光碟均为本人自购，本人日语水平有限所以部分校对还是交给Claude了。\n注2：歌词都没有翻译，本人日语水平还不足以想到很好的方法在不破坏分行的情 …","title":"《超かぐや姫》Blu-Ray 特装典藏版 Special Booklet 个人中文翻译","url":"/post/chou-kaguyahime-booklet/"},{"content":"WIP ","date":"2026-10-15","summary":"WIP","title":"Codeforces 2276 E - Good Substrings","url":"/post/cf2276e/"},{"content":"WIP ","date":"2026-10-15","summary":"WIP","title":"Codeforces 2276 D - Caveman","url":"/post/cf2276d/"},{"content":"WIP ","date":"2026-10-15","summary":"WIP","title":"Codeforces 2276 C - Subarrays","url":"/post/cf2276c/"},{"content":"题目链接 Codeforces 2276 B - Replace and Compress\n题目描述 给定一个长度为 \\(n\\) 的字符串 \\(s\\)，其中只包含字符 0 和 1。你需要恰好执行一次由以下两步组成的操作：\n选择至多一个下标在 \\(2\\) 到 \\(n-1\\)（含）之间的字符，并将其取反：0 变为 1，或 1 变为 0。也可以不修改任何字符。字符串的第一个和最后一个字符不能修改。 将每个由相同字符连续组成的极大块替换为一个该字符。 如果一个块无法向左或向右扩展相同字符，则称其为“极大块”。例如，第二步后，字符串 100111011 会变为 10101。\n请计算执行该操作后，能够得到多少个不同的字符串。\n输入 第一行包含整数 \\(t\\)（\\(1 \\le t \\le 10^4\\)），表示测试用例数量。\n每个测试用例包含一行字符串 \\(s\\)：\n\\(3 \\le |s| \\le 3 \\times 10^5\\) \\(s\\) 仅由 0 和 1 构成。 额外保证：所有测试用例的字符串长度之和不超过 \\(3 \\times 10^5\\)。\n输出 对于每个测试用例，输出一个整数：执行操作后可得到的不同字符串数量。\n示例 输入：\n7 001 000 010 00010 100111011 001011010 1111 输出：\n1 2 2 3 3 2 2 说明 第一个测试用例中，可以不修改字符，或修改第二个字符：\n001 → 压缩后为 01 011 → 压缩后也为 01 因此答案为 1。\n第五个测试用例 100111011 中：\n不修改字符：压缩后得到 10101 修改第 2 个字符：110111011 → 10101 修改第 5 个字符：100101011 → 1010101 修改第 7 个字符：100111111 → 101 因此，一共能得到 3 个不同字符串：101、10101、1010101。\n思路 首先我们注意到，一切的结果都是0和1的交替块，然后首字符是固定的。因此，压缩后的字符串只能通过块的数量来决定。那样问题就变成了统计能够得到多少种不同的块数量。\n设原字符串块的数量为 \\(r\\), 反转内部 $i$ ($2 \\le i \\le n-1$) 后，块的数量可能会增加或减少。而这个增加与减少的情况取决于当前字符和其相邻字符的关系。\ntriple. 当位于一段的中间时，条件为 s[i-1] == s[i] == s[i+1]，反转后块的数量会增加 2。 isolated. 当是孤立的字符时，条件为 s[i-1] == s[i] != s[i+1]，反转后块的数量会减少 2。 其他情况下，块的数量不会改变。 不反转的情况下可以直接得到 \\(r\\) 。而反转后，块数量只可能增加 2、减少 2 或保持不变。因此，答案为：\n\\[ \\boxed{answer = 1 + triple + isolated} \\]代码 #include \u0026lt;iostream\u0026gt; using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int t; cin \u0026gt;\u0026gt; t; while (t--) { string s; cin \u0026gt;\u0026gt; s; int n = s.size(); bool triple = false; bool isolated = false; for (int i = 1; i \u0026lt;= n - 2; i++) { if (s[i - 1] == s[i] \u0026amp;\u0026amp; s[i] == s[i + 1]) { triple = true; } else if (s[i - 1] == s[i + 1] \u0026amp;\u0026amp; s[i] != s[i - 1]) { isolated = true; } } cout \u0026lt;\u0026lt; 1 + triple + isolated \u0026lt;\u0026lt; \u0026#39;\\n\u0026#39;; } return 0; } 复杂度 时间复杂度：\\(O(n)\\)\n空间复杂度：\\(O(1)\\)\n","date":"2026-10-15","summary":"题目链接 Codeforces 2276 B - Replace and Compress\n题目描述 给定一个长度为 \\(n\\) 的字符串 \\(s\\)，其中只包含字符 0 和 1。你需要恰好执行一次由以下两步组成的操作：\n选择至多一个下标在 …","title":"Codeforces 2276 B - Replace and Compress","url":"/post/cf2276b/"},{"content":"题目链接 Codeforces 2276 A - Perfect Sandwiches\n题目描述 Monocarp 有 \\(a\\) 片奶酪和 \\(b\\) 片香肠。他想用它们为朋友制作尽可能多的三明治。\nMonocarp 非常节俭，因此制作三明治时必须恰好用完全部 \\(a\\) 片奶酪和全部 \\(b\\) 片香肠，不能有剩余。此外，制作三明治需要满足以下规则：\n每个三明治至少包含一片奶酪和一片香肠； 每一片奶酪和每一片香肠都必须恰好放入一个三明治中； 对于每个三明治，其中奶酪片的数量必须严格大于香肠片的数量。 请帮助 Monocarp 求出最多能制作多少个三明治；如果无法按照规则分配所有食材，输出无法完成。\n输入 第一行包含一个整数 \\(t\\)（\\(1 \\le t \\le 10^4\\)），表示测试用例的数量。\n每个测试用例只有一行，包含两个整数 \\(a\\) 和 \\(b\\)（\\(1 \\le a,b \\le 100\\)），分别表示奶酪片和香肠片的数量。\n输出 对于每个测试用例，输出一个整数：能够制作的三明治的最大数量。若无法按规则分配所有食材，则输出 -1。\n示例 输入：\n3 6 4 5 1 4 5 输出：\n2 1 -1 说明 第一个测试用例中，可以制作 2 个三明治。例如每个三明治都使用 3 片奶酪和 2 片香肠。\n第二个测试用例中，可以用 5 片奶酪和 1 片香肠制作 1 个三明治。\n第三个测试用例中，无法在用完所有奶酪和香肠的前提下制作三明治，因此输出 -1。\n思路 纯数学题，学过数列的1普朗克时间就能解出来。\n设做出 $k$ 个三明治。每个至少要有 1 片香肠，且奶酪数量一定大于香肠数量，香肠数量为 $sausage_i$，所以每个三明治至少需要 $sausage_i + 1$ 片奶酪。\n对所有的三明治求和：\n香肠总数： \\(\\sum_{i=1}^{k} sausage_i = b\\) 奶酪总数： \\(\\sum_{i=1}^{k} cheese_i = a\\) 并且 $cheese_i \\geq sausage_i + 1$，所以：$ a \\geq b + k$ 即为 $ k \\leq a - b$\n然后同时每个三明治至少有一片香肠，所以 \\(k \\leq b\\)。\n因此：\n如果 $a - b \u0026lt; 1$（即 $a \\le b$），无法分配，输出 $-1$。否则答案是 $\\min(a - b,\\ b)$。\n代码 #include \u0026lt;iostream\u0026gt; using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int t; cin \u0026gt;\u0026gt; t; while (t--) { int a, b; cin \u0026gt;\u0026gt; a \u0026gt;\u0026gt; b; if (a \u0026lt;= b) { cout \u0026lt;\u0026lt; -1 \u0026lt;\u0026lt; \u0026#39;\\n\u0026#39;; } else { cout \u0026lt;\u0026lt; min(a - b, b) \u0026lt;\u0026lt; \u0026#39;\\n\u0026#39;; } } return 0; } 复杂度 时间复杂度：\\(O(t)\\)\n空间复杂度：\\(O(1)\\)\n","date":"2026-10-15","summary":"题目链接 Codeforces 2276 A - Perfect Sandwiches\n题目描述 Monocarp 有 \\(a\\) 片奶酪和 \\(b\\) 片香肠。他想用它们为朋友制作尽可能多的三明治。\nMonocarp 非常节俭，因此制作三 …","title":"Codeforces 2276 A - Perfect Sandwiches","url":"/post/cf2276a/"},{"content":"短代码 这是一个绿色提示。 警告窗口\n这是一个信息窗口。 点击展开折叠内容 代码 const greet = (name) =\u0026gt; `Hello, ${name}`; console.log(greet(\u0026#39;Hugo\u0026#39;)); 表格 特性 实现 页面切换 View Transitions 进度条 scroll-driven animations 引用块的样子。\n结尾。\n","date":"2026-06-04","summary":"短代码 这是一个绿色提示。 警告窗口\n这是一个信息窗口。 点击展开折叠内容 代码 const greet = (name) =\u0026gt; `Hello, ${name}`; …","title":"你好，Hugo！","url":"/post/hello-hugo/"}]