<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Loge谈信奥--一个专注于信奥人的博客]]></title><description><![CDATA[Loge谈信奥本阶段专注使用scratch编程学习，参加白名单赛事，偶尔也会分享一下工作中内容]]></description><link>https://blog.youkuaiyun.com/rogeliu</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; rogeliu]]></copyright><item><title><![CDATA[打卡信奥刷题（3683）用C++实现信奥题 P12302 [ICPC 2023 WF] 时差]]></title><link>https://blog.youkuaiyun.com/rogeliu/article/details/170407869</link><guid>https://blog.youkuaiyun.com/rogeliu/article/details/170407869</guid><author>rogeliu</author><pubDate>Tue, 10 Nov 2026 08:42:55 +0800</pubDate><description><![CDATA[本题要求在ICPC World Finals期间合理安排睡眠时间，确保不错过任何活动。通过倒序贪心策略，判断每个活动前是否能安排足够长的睡眠周期（睡k分钟，醒k分钟，再活动k分钟），若无法满足则输出impossible。算法核心是利用区间关系确定最小睡眠长度，并通过栈式结构记录睡眠时段，最终输出合法方案。时间复杂度为$O(n)$，适用于大规模数据。]]></description><category></category></item><item><title><![CDATA[打卡信奥刷题（3682）用C++实现信奥题 P12301 [ICPC 2022/2023 WF] 变成红灯]]></title><link>https://blog.youkuaiyun.com/rogeliu/article/details/170332699</link><guid>https://blog.youkuaiyun.com/rogeliu/article/details/170332699</guid><author>rogeliu</author><pubDate>Tue, 10 Nov 2026 07:15:32 +0800</pubDate><description><![CDATA[Mei 的父母去年一年都在重新设计如何装修房子，但是他们的照明系统十分复杂！房子中每个房间都有一盏 LED 灯，灯可以设成红色，绿色或蓝色，如图 G.1 所示。图 G.1. 样例 1 中灯的初始状态。按钮和导线没有画出。房子里到处都有各种按钮，每个按钮都与一盏或多盏灯相连。按下一个按钮后，与该按钮相连的红灯会变成绿灯，绿灯会变成蓝灯，蓝灯会变成红灯。每个按钮都可以多次按下。由于房屋建造于多路开关布线发明之前，每盏灯最多只由两个按钮控制。Mei 最喜欢的颜色是红色，所以她想把所有的灯都变成红色。]]></description><category></category></item><item><title><![CDATA[打卡信奥刷题（3681）用C++实现信奥题 P12290 [蓝桥杯 2024 国 Java A] 基因组合]]></title><link>https://blog.youkuaiyun.com/rogeliu/article/details/170332473</link><guid>https://blog.youkuaiyun.com/rogeliu/article/details/170332473</guid><author>rogeliu</author><pubDate>Mon, 09 Nov 2026 08:53:39 +0800</pubDate><description><![CDATA[本题考察博弈策略下的异或极值问题。小蓝（先手）追求最大异或值，小乔（后手）追求最小异或值。通过构建01字典树，分别预处理每个基因在不同选择顺序下的最优响应值：当小蓝先选时，枚举其选择并取后手能实现的最小异或值中的最大者；反之，小乔先选时，取后手能实现的最大异或值中的最小者。最终输出两个极值。时间复杂度为 $O(n \log C)$，适用于 $n \leq 10^5$，$a_i \leq 10^9$。]]></description><category></category></item><item><title><![CDATA[打卡信奥刷题（3680）用C++实现信奥题 P12282 [蓝桥杯 2024 国 Python A] 羊圈]]></title><link>https://blog.youkuaiyun.com/rogeliu/article/details/170287066</link><guid>https://blog.youkuaiyun.com/rogeliu/article/details/170287066</guid><author>rogeliu</author><pubDate>Mon, 09 Nov 2026 07:14:36 +0800</pubDate><description><![CDATA[小蓝有 $m$ 头羊，每头羊逃跑概率已知。他拥有 $n$ 个羊圈，每个可围住连续 $l_i$ 只羊。目标是合理放置羊圈，使跑掉羊的期望数量最小。通过动态规划枚举状态（使用哪些羊圈）与位置，计算最大可覆盖的逃跑概率之和，最终用总期望减去该值，得到最小期望逃跑数。答案四舍五入保留两位小数。]]></description><category></category></item><item><title><![CDATA[打卡信奥刷题（3679）用C++实现信奥题 P12275 [蓝桥杯 2024 国 Python B] 工厂]]></title><link>https://blog.youkuaiyun.com/rogeliu/article/details/170286986</link><guid>https://blog.youkuaiyun.com/rogeliu/article/details/170286986</guid><author>rogeliu</author><pubDate>Sun, 08 Nov 2026 11:27:59 +0800</pubDate><description><![CDATA[本题为蓝桥杯2024国赛Python B组真题，要求计算工厂中每个工人一天内能获得的最大平均收益。通过动态规划求解：对每种物品，考虑其直接销售收益或通过生产方式转化为更高价值物品的收益。利用图结构存储生产关系，从低编号物品向高编号物品递推，状态转移时综合考虑原材料消耗与产出效率。最终取所有物品单位收益最大值，输出四舍五入保留两位小数的结果。]]></description><category></category></item><item><title><![CDATA[打卡信奥刷题（3678）用C++实现信奥题 P12274 [蓝桥杯 2024 国 Python B] 设计]]></title><link>https://blog.youkuaiyun.com/rogeliu/article/details/170229895</link><guid>https://blog.youkuaiyun.com/rogeliu/article/details/170229895</guid><author>rogeliu</author><pubDate>Sun, 08 Nov 2026 07:45:31 +0800</pubDate><description><![CDATA[本题为蓝桥杯2024国赛Python组题目，要求实现动态图的连通性查询与边的增删操作。使用并查集维护连通分量，并用栈记录删除操作的历史，支持添加边、删除最后一条边及查询两点是否连通。通过路径压缩与按秩合并优化效率，满足大规模数据处理需求。]]></description><category></category></item><item><title><![CDATA[打卡信奥刷题（3677）用C++实现信奥题 P12273 [蓝桥杯 2024 国 Python B] 异位和]]></title><link>https://blog.youkuaiyun.com/rogeliu/article/details/170229776</link><guid>https://blog.youkuaiyun.com/rogeliu/article/details/170229776</guid><author>rogeliu</author><pubDate>Sat, 07 Nov 2026 08:06:06 +0800</pubDate><description><![CDATA[给定数组 $ A $，其 $ k $ 次异位和数组的第 $ x $ 个元素可通过矩阵快速幂优化递推关系求解。定义转移矩阵，利用 $ F^k(A)_x $ 的线性递推性质，结合前缀和与模运算，可在 $ O(\log k) $ 时间内处理每次询问。通过预计算总和与矩阵快速幂，高效应对大规模数据，时间复杂度为 $ O(Q \log k) $，适用于 $ n, Q \leq 10^5 $、$ k_i \leq 10^9 $ 的强约束场景。]]></description><category></category></item><item><title><![CDATA[打卡信奥刷题（3676）用C++实现信奥题 P12271 [蓝桥杯 2024 国 Python B] 括号与字母]]></title><link>https://blog.youkuaiyun.com/rogeliu/article/details/170183671</link><guid>https://blog.youkuaiyun.com/rogeliu/article/details/170183671</guid><author>rogeliu</author><pubDate>Sat, 07 Nov 2026 07:17:29 +0800</pubDate><description><![CDATA[给定字符串 $ S $ 仅含小写字母和括号，保证括号匹配。对每组询问 $ (c_i, x_i) $，求有多少对匹配括号间包含不少于 $ x_i $ 个字符 $ c_i $。通过预处理每个字母在前缀中的出现次数，并统计每对括号内各字符数量，利用前缀和优化查询，实现高效解答。时间复杂度 $ O(|S| \cdot 26 + Q) $，适用于大规模数据。]]></description><category></category></item><item><title><![CDATA[打卡信奥刷题（3675）用C++实现信奥题 P12258 [蓝桥杯 2024 国 Java B] 背包问题]]></title><link>https://blog.youkuaiyun.com/rogeliu/article/details/170183463</link><guid>https://blog.youkuaiyun.com/rogeliu/article/details/170183463</guid><author>rogeliu</author><pubDate>Fri, 06 Nov 2026 08:45:43 +0800</pubDate><description><![CDATA[本题为蓝桥杯2024国赛Java B组背包问题，要求在物品数量不少于K的条件下，求所有可能背包重量（去重后）按升序排列的第L个重量。通过深度优先搜索生成前K个物品组合，利用优先队列维护最小重量，并用哈希表去重，结合剪枝优化，高效求解。最终输出第L小的重量。]]></description><category></category></item><item><title><![CDATA[打卡信奥刷题（3674）用C++实现信奥题 P12256 [蓝桥杯 2024 国 Java B] 数据库]]></title><link>https://blog.youkuaiyun.com/rogeliu/article/details/170120537</link><guid>https://blog.youkuaiyun.com/rogeliu/article/details/170120537</guid><author>rogeliu</author><pubDate>Fri, 06 Nov 2026 07:16:13 +0800</pubDate><description><![CDATA[本题要求计算在保持数据库最终状态一致的前提下，对给定的插入与删除操作序列进行合法重排的方案数。关键在于：每个 INSERT 必须在对应的 DELETE 之前执行，且相同 id 的插入与删除必须成对出现。通过分析操作间的依赖关系，发现每对 (INSERT, DELETE) 可以在不破坏顺序的前提下自由排列，组合数乘积即为答案。最终结果需对 $10^9+7$ 取模。]]></description><category></category></item><item><title><![CDATA[打卡信奥刷题（3673）用C++实现信奥题 P12255 [蓝桥杯 2024 国 Java B] 园丁]]></title><link>https://blog.youkuaiyun.com/rogeliu/article/details/170120094</link><guid>https://blog.youkuaiyun.com/rogeliu/article/details/170120094</guid><author>rogeliu</author><pubDate>Thu, 05 Nov 2026 08:43:55 +0800</pubDate><description><![CDATA[本题要求在树结构中修改最少结点权值，使得每个至少有两个儿子的结点，其任意两个子结点权值的乘积均非完全平方数。核心思想是将权值化为“无平方因子”形式（即去除所有平方因子），然后通过深度优先搜索统计同一父节点下存在相同简化权值的子结点对数，每对需至少修改一个。最终答案为所有此类冲突对的总数。时间复杂度为 $O(n \sqrt{a_i})$，适用于 $n \leq 10^5$。]]></description><category></category></item><item><title><![CDATA[打卡信奥刷题（3672）用C++实现信奥题 P12247 跳舞机]]></title><link>https://blog.youkuaiyun.com/rogeliu/article/details/170019666</link><guid>https://blog.youkuaiyun.com/rogeliu/article/details/170019666</guid><author>rogeliu</author><pubDate>Thu, 05 Nov 2026 07:13:29 +0800</pubDate><description><![CDATA[本题要求在有限时间内安排跳舞机游戏，最大化玩家兴奋值总和。每局需连续k分钟，且必须完全在玩家停留区间内。通过动态规划结合优先队列维护可选玩家，按时间推进，每次更新最大兴奋值。关键在于对每个时间点，仅保留仍在停留的玩家，并选择兴奋值最高的可行方案。最终输出最大兴奋值之和。]]></description><category></category></item><item><title><![CDATA[打卡信奥刷题（3671）用C++实现信奥题 P12238 [蓝桥杯 2023 国 Java A] 单词分类]]></title><link>https://blog.youkuaiyun.com/rogeliu/article/details/170019267</link><guid>https://blog.youkuaiyun.com/rogeliu/article/details/170019267</guid><author>rogeliu</author><pubDate>Wed, 04 Nov 2026 08:44:39 +0800</pubDate><description><![CDATA[本题要求将N个由'l'、'q'、'b'组成的单词按前缀分为K类，每类对应一个前缀，每个单词仅属于一类且每类至少一个单词。通过构建Trie树，利用树形DP统计以每个节点为根的子树中选择若干前缀构成恰好K类的方案数。状态dp[u][i]表示在节点u的子树中选出i个前缀的方案数，通过合并子树信息并考虑当前节点单独作为前缀的情况，最终答案为dp[0][k]，结果对$10^9+7$取模。]]></description><category></category></item><item><title><![CDATA[打卡信奥刷题（3670）用C++实现信奥题 P12237 [蓝桥杯 2023 国 Java A] 质数排序]]></title><link>https://blog.youkuaiyun.com/rogeliu/article/details/169916897</link><guid>https://blog.youkuaiyun.com/rogeliu/article/details/169916897</guid><author>rogeliu</author><pubDate>Wed, 04 Nov 2026 07:14:57 +0800</pubDate><description><![CDATA[本题要求对 $1 \sim n$ 的所有排列进行“质数排序”（即下标为质数的位置升序排序，其余不变），求所有排列经排序后逆序对总数之和，结果对 $998244353$ 取模。通过筛法预处理质数，统计质数位置数量，利用组合数学与逆元计算贡献，最终得出答案。时间复杂度 $O(n \log \log n)$，适用于 $n \leq 10^6$。]]></description><category></category></item><item><title><![CDATA[打卡信奥刷题（3669）用C++实现信奥题 P12236 [蓝桥杯 2023 国 Java A] 连续数组]]></title><link>https://blog.youkuaiyun.com/rogeliu/article/details/169916357</link><guid>https://blog.youkuaiyun.com/rogeliu/article/details/169916357</guid><author>rogeliu</author><pubDate>Tue, 03 Nov 2026 08:41:09 +0800</pubDate><description><![CDATA[本题要求统计满足特定相邻关系的长度为 $N$ 的连续数组数量。数组元素为 $1 \sim N$ 的不重复整数，相邻元素间关系为“连续”（差1）或“不连续”。使用状压 DP，状态 $dp[s][i]$ 表示已选集合 $s$ 且最后一个元素为 $i$ 的方案数。枚举当前状态和下一个元素，根据给定关系转移。最终答案为所有完整状态 $(1<<N)-1$ 下的总和。时间复杂度 $O(2^N \cdot N^2)$，适用于 $N \leq 15$。]]></description><category></category></item><item><title><![CDATA[打卡信奥刷题（3668）用C++实现信奥题 P12234 [蓝桥杯 2023 国 Java A] 最大算式]]></title><link>https://blog.youkuaiyun.com/rogeliu/article/details/169815639</link><guid>https://blog.youkuaiyun.com/rogeliu/article/details/169815639</guid><author>rogeliu</author><pubDate>Tue, 03 Nov 2026 07:13:58 +0800</pubDate><description><![CDATA[本题要求在不改变数列顺序的前提下，通过插入+、*、(、)使算式结果最大。关键观察是：对于数字1，应尽量与相邻数相加（如1+1优于1*1），而大于1的数直接相乘更优。通过贪心策略合并1与后续数，避免单独使用1，最终将所有有效数相乘取模输出。时间复杂度为$O(n)$，适用于大规模数据。]]></description><category></category></item><item><title><![CDATA[打卡信奥刷题（3667）用C++实现信奥题 P12223 [蓝桥杯 2023 国 Java B] 非对称二叉树]]></title><link>https://blog.youkuaiyun.com/rogeliu/article/details/169815283</link><guid>https://blog.youkuaiyun.com/rogeliu/article/details/169815283</guid><author>rogeliu</author><pubDate>Mon, 02 Nov 2026 08:44:29 +0800</pubDate><description><![CDATA[本题要求计算满足特定非对称条件的二叉树数量。对于每个结点，其左右子树高度需满足 $\max(h_l, h_r) \geq k \cdot \min(h_l, h_r)$。通过动态规划，定义 $f[n][h]$ 表示 $n$ 个结点、高度为 $h$ 的合法二叉树数量，枚举左子树结点数与高度，转移时判断是否满足非对称条件。最终累加所有高度的方案数即为答案。时间复杂度 $O(n^5)$，适用于 $n \leq 35$。]]></description><category></category></item><item><title><![CDATA[打卡信奥刷题（3666）用C++实现信奥题 P12220 [蓝桥杯 2023 国 Java B] 星球]]></title><link>https://blog.youkuaiyun.com/rogeliu/article/details/169719923</link><guid>https://blog.youkuaiyun.com/rogeliu/article/details/169719923</guid><author>rogeliu</author><pubDate>Mon, 02 Nov 2026 07:13:35 +0800</pubDate><description><![CDATA[本题为蓝桥杯2023国赛Java B组真题，要求求解攻击n颗星球的最小能量消耗。给定每颗星球的三维坐标和防御强度，能量计算公式为：路径上相邻星球间距离乘以后者防御强度之和。由于n ≤ 18，采用状态压缩动态规划（状压DP）求解，枚举所有可能的访问顺序，通过dp[i][mask]表示以第i颗星球为终点、已访问状态为mask时的最小代价，最终取所有完成访问状态下的最小值。时间复杂度为O(n²·2ⁿ)，适用于小规模但需高效搜索的最优化问题。]]></description><category></category></item><item><title><![CDATA[打卡信奥刷题（3665）用C++实现信奥题 P12195 [NOISG 2025 Prelim] Itinerary]]></title><link>https://blog.youkuaiyun.com/rogeliu/article/details/169719377</link><guid>https://blog.youkuaiyun.com/rogeliu/article/details/169719377</guid><author>rogeliu</author><pubDate>Sun, 01 Nov 2026 08:41:04 +0800</pubDate><description><![CDATA[本题要求判断在树形城市图中，从每个城市出发是否能存在一条“行程”——即访问所有活动城市按顺序的子序列，且路径满足每条边恰好经过两次。通过预处理树的深度与父节点关系，模拟从起点到终点的路径并统计各点被经过次数，若某点被经过超过两次则无解；否则以终点为根进行DFS标记可达点。最终输出每个城市是否可作为有效起点。时间复杂度为 $O(n + m)$。]]></description><category></category></item><item><title><![CDATA[打卡信奥刷题（3664）用C++实现信奥题 P12194 [NOISG 2025 Prelim] Snacks]]></title><link>https://blog.youkuaiyun.com/rogeliu/article/details/169623557</link><guid>https://blog.youkuaiyun.com/rogeliu/article/details/169623557</guid><author>rogeliu</author><pubDate>Sun, 01 Nov 2026 07:15:07 +0800</pubDate><description><![CDATA[本题要求维护一个数组，支持区间更新操作：将所有值在 $[l, r]$ 范围内的元素替换为 $x$，并每次输出总和。使用平衡树（如 std::set）维护区间及其值的出现次数，通过惰性更新与区间分裂合并高效处理。初始总和预计算，每次查询通过统计被替换元素数量及差值更新总和，时间复杂度 $O(q \log n)$，适用于大规模数据。]]></description><category></category></item></channel></rss>