- 博客(18)
- 收藏
- 关注
原创 AT_abc409_e [ABC409E] Pair Annihilation
题目摘要:AT_abc409_e [ABC409E] Pair Annihilation 的解法。给定一棵树,节点上有电子(可能为负),电子会朝根节点移动并湮灭。通过换根DP发现答案与根的选择无关,因此可以任选根节点计算。定义f[i]为子树电子集中到i的能量消耗,g[i]为集中后的电子数。DFS遍历树,计算f和g数组,最终结果即为f[1]。注意要使用long long避免溢出。
2025-06-08 21:42:45
607
原创 AT_abc408_d [ABC408D] Flip to Gather 题解
该题解提出了一个动态规划解决方案来处理字符串变换问题。定义三维状态dp[i][j][k]表示前i位中当前位为j且前面是否有1的最小操作次数。通过三种转移方程分别处理:1)当前位为0且前面无1;2)当前位为0且前面有1;3)当前位为1的情况。最终取三种合法状态的最小值作为答案。算法时间复杂度为O(n),适用于大规模输入。代码使用C++实现,处理每个测试用例时初始化dp数组并进行状态转移。
2025-06-02 22:09:02
920
原创 题解:AT_abc406_c [ABC406C] ~
摘要本题解针对AtCoder ABC406C问题,要求找出满足特定递增递减条件的子序列数量。通过预处理计算每个位置作为峰值/谷值的前缀和,然后枚举可能的起点,使用二分法确定终点区间范围,统计符合条件的子序列数。核心思路是在保证恰好存在一个峰和一个谷的条件下,高效计算所有可能区间的贡献值。该算法时间复杂度为O(n log n),适用于给定的输入规模。
2025-05-28 22:37:45
439
原创 [ABC405E] Fruit Lineup 题解
摘要本题解给出了[ABC405E] Fruit Lineup问题的组合数学解法。核心思路是将橘子和葡萄插入苹果和香蕉之间,定义$dp_i$表示橘子的摆放方案数。利用组合数公式计算将橘子和葡萄分配到特定位置的可能情况,最终对所有可能的$i$求和得到答案。预处理阶乘后,通过快速幂和模逆元优化组合数计算,确保算法高效性。时间复杂度主要取决于阶乘预处理。代码简洁,思路清晰。
2025-05-27 21:40:39
936
原创 [USACO24FEB]Lazy Cow P题解
本文提出了一种解决[USACO24FEB] Lazy Cow P问题的线段树解法。通过分析发现任务分配越均匀越好,且任务数量呈现单调不降的特性。主要思路:当新需求到来时,选择合适的pos位置将其后面所有时刻"填平";使用二分查找确定pos位置;通过线段树维护任务数量和前缀和;处理m时刻后的多余任务;使用光速幂优化3的幂次计算。该方法利用线段树高效处理区间操作和查询,时间复杂度为O(q log m),其中q是查询次数,m是最大时刻。代码实现中包含了线段树的各种操作和二分查找的实现细节。
2025-05-27 21:39:30
739
原创 [USACO24FEB]Minimum Sum of Maximums P题解
摘要本文提出了一种解决USACO24FEB最小化最大值和问题的动态规划方法。关键思路是通过将数组元素有序排列来最小化相邻元素的绝对差之和。算法使用区间DP来处理分段问题,其中f[l][r][j]表示区间[l,r]填满状态j的最小代价。主要步骤包括处理边界条件、划分固定块、对未固定元素排序,并通过三种转移方式(保留边界、合并段、包裹段)进行状态转移。最终时间复杂度主要由区间DP和状态转移决定,适用于中等规模输入。
2025-05-27 21:37:34
893
原创 [USACO24FEB]Infinite Adventure P题解
摘要本文提出了一种解决图上行走问题的倍增算法。通过预处理节点间的跳跃信息,利用动态规划数组记录不同步数和日期模数下的可达节点。当节点周期不同时,采用分层处理策略优化时间复杂度。预处理阶段复杂度为O(N(logT+logΔ)),查询阶段为O(Q logT(logT+logΔ)),适用于大规模数据。算法核心在于高效利用倍增思想进行路径压缩,并通过巧妙设计避免超时问题。代码实现中采用动态内存分配以节省空间,确保在大数据量下仍能高效运行。
2025-05-27 21:36:16
962
原创 [ABC407F] Sums of Sliding Window Maximum 题解
摘要本文提出了一种高效解决"滑动窗口最大值之和"问题的方法。利用单调栈预处理每个元素的前驱大数和后继小数位置,将问题转化为计算每个元素在特定区间的贡献。通过分析贡献规律,提出了一种基于差分前缀和的优化算法,将时间复杂度从O(n²)降低至接近线性。该方法巧妙地将元素贡献分解为多个层次,利用前缀和数组累计每个层次的贡献,最终高效计算出所有窗口大小的答案。代码实现简洁且高效,通过了所有测试点。
2025-05-27 21:34:12
770
原创 P12424 【MX-X12-T7】「ALFR Round 5」地铁(Easy Version) 题解
摘要:本文分析了地铁线路交叉问题(Easy Version)的解法。通过将线路分为两类(左上到右下和左下到右上),定义交叉点无效点数量为$w$,推导出覆盖点数公式$(x+y)(n+m-1)-w$。进一步分析两类交叉情况(不同方向线路和同向线路起点交叉),得出$w=xy+x(x-1)+y(y-1)$。最终通过数学推导得到答案公式$\lceil 2 \times \frac{n+m-\sqrt{n^2+m^2-nm}}{3} \rceil$,并给出代码实现。
2025-05-27 21:32:54
579
原创 题解:P12420 【MX-X12-T3】「ALFR Round 5」变换
摘要:该题解分析了位运算性质,发现x只能是m所包含的2的幂次之和。通过计算a数组异或和,检查哪些m的二进制位可以被补足。关键点是:若所有a_i都含有某一位,则该位无法被补足。代码使用位运算高效处理,注意避免endl导致超时。时间复杂度为O(n)每测试用例。
2025-05-27 21:31:13
530
原创 题解:AT_abc398_f [ABC398F] ABCBA
这道题解提供了两种方法使字符串回文:哈希和KMP。主要思路是将字符串反转后拼接到原字符串前面,通过求最长公共前后缀来构造回文串。KMP解法使用next数组计算,代码展示如何反转字符串并拼接,最终输出处理后的回文结果。作者提到比赛时因误解英语术语而耽误时间。
2025-05-27 21:29:47
385
原创 题解:P11914 [PA 2025] 上班 / Praca
摘要该题解针对P11914题目,提出了处理线上线下会议安排的优化策略。核心思路是:当线下会议数≤k时,在家办公可最大化空闲时间;否则需枚举上班区间,利用前缀和计算会议数,找到满足条件的方案。代码实现中分别处理了两种场景,并通过双重循环比较不同区间方案,最终输出最优解。时间复杂度主要取决于枚举区间部分。
2025-05-27 21:27:26
204
原创 题解:P11724 [JOIG 2025] ポスター 2 / Poster 2
题解摘要该题解解决了一个方格图颜色修改问题,目标是最大化"鲜艳程度"。解题思路分为两种情况:当颜色种类K≥9时,采用贪心策略将颜色修改为-1以确保与周围方格不同;当K<9时,暴力枚举每个方格可能的颜色修改。算法时间复杂度为O(n²),通过预处理和局部修改优化避免了高复杂度。关键点在于判断每个2x2方格的颜色独特性贡献,并在修改后恢复原颜色以保证正确性。
2025-05-27 21:26:38
781
原创 P6275 [USACO20OPEN] Sprinklers 2: Return of the Alfalfa P题解
本文介绍了USACO20OPEN题目"Sprinklers 2: Return of the Alfalfa"的解题思路和实现方法。首先给出了25分的暴力枚举解法,时间复杂度为O(2^nn^3)。然后提出50分的动态规划解法,通过分割线将田地分为玉米和苜蓿两部分,定义状态dp[i,j,k]表示分割线在第i行第j列时方向为k时的方案数,时间复杂度O(n^3)。最后给出100分优化方案,通过预处理2的幂次和使用前缀和优化,将时间复杂度降为O(n^2)。核心思想是利用分割线划分区域,并使用动态规划计算方案数,同时
2025-05-27 21:25:31
984
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人