Algorithm Notes

LJXin

记录算法刷题、竞赛思路与编程成长,希望每一篇都讲清楚一点、写扎实一点。

摘要: CF_Div2_1927_D 原题链接 题目描述 给定 n 个元素的序列 a,进行 q 次询问。每次询问给定 l, r,求在区间 [l, r] 内是否存在满足 l ≤ i, j ≤ r 且 a[i] ≠ a[j] 的 i, j。 如果存在,则输出任意一种可能情况。 思路剖析 只需要找到与 a[l] 阅读全文
posted @ 2026-04-16 21:03 kliu_365 阅读(6) 评论(0) 推荐(0)
摘要: CF_Div2_1907_D 原题链接 题目描述 给定 n 个区间,每次移动 k 步,确保第 i 次移动后在第 i 个区间 (l[i], r[i]) 里,求可完成任务的 k 的最小值。 思路剖析 这是一个简单的二分答案题,重点关注 check 函数的实现。 对于每个二分到的 k(即移动 0~k 步) 阅读全文
posted @ 2026-04-16 14:24 kliu_365 阅读(7) 评论(0) 推荐(0)
摘要: CF_Div2_1721_C 原题链接 题目描述 t 个样例,每个样例:给定两个升序数组 a 和 b。 我们对每个 a[i] 加上一个非负数 d[i],得到新数组,再对这个新数组排序,恰好得到 b。 现在对于每个位置 i,求 d[i] 可能的最小值和最大值。 不同位置的最优解可以对应不同的 d 数组 阅读全文
posted @ 2026-04-16 12:56 kliu_365 阅读(7) 评论(0) 推荐(0)
摘要: CF_Div2_807_C 原题链接 题目描述 t 次测试:给定长度为 n 的字符串 s,进行 c 次操作,每次操作:将第 l 到第 r 的子字符串复制到 s 尾部,再进行 q 次询问,每次询问当前字符串第 k 个字符是什么 数据范围 1 ≤ t ≤ 1000 1 ≤ n ≤ 2⋅10^5 1 ≤ 阅读全文
posted @ 2026-04-16 10:52 kliu_365 阅读(8) 评论(0) 推荐(0)
摘要: U535992 J-C 小梦的宝石收集 🔗 原题链接 📌 问题描述 题目 给定序列 a,进行 k 次操作,每次把最大的数变最小的,或把最小的变成最大的,求序列的最小极差。 💡 核心思路 如果暴力,每次枚举两种情况,会爆 (2^N)。 其次,可以证明:任意操作序列,都可以等价地调整为: 先进行 阅读全文
posted @ 2026-04-01 19:19 kliu_365 阅读(22) 评论(0) 推荐(0)
摘要: P10429 [蓝桥杯 2024 省 B] 拔河 🔗 原题链接 📌 问题描述 题目 给定序列 a,选择两个不重叠的连续子段 [l1,r1] 和 [l2,r2](满足 r1 < l2), 使它们的区间和之差最小。 约束条件 \(1 \leq n \leq 10^3\),\(1 \leq a_i \ 阅读全文
posted @ 2026-03-31 12:33 kliu_365 阅读(20) 评论(0) 推荐(0)
摘要: P12342 [蓝桥杯 2025 省 B/Python B 第二场] 数列差分 原题链接 题目范围 \(1 \leq n \leq 10^5\),\(-10^9 \leq a_i \leq 10^9\),\(-10^9 \leq b_i \leq 10^9\)。 解题思路 求最少修改,等价于最多保留 阅读全文
posted @ 2026-03-31 01:33 kliu_365 阅读(16) 评论(0) 推荐(0)
摘要: P9749 [CSP-J 2023] 公路 原题链接 题目范围 \(1 \leq n \leq 10^5\),\(1 \leq d \leq 10^5\),\(1 \leq v_i \leq 10^5\),\(1 \leq a_i \leq 10^5\)。 解题思路 \(d\): 车每升油可以前进的 阅读全文
posted @ 2026-03-31 01:17 kliu_365 阅读(6) 评论(0) 推荐(0)
摘要: P10387 [蓝桥杯 2024 省 A] 训练士兵 原题链接 题目范围 \(1 \leq n \leq 10^5\),\(1 \leq p_i, c_i \leq 10^6\),\(1 \leq S \leq 10^{10}\) 解题思路 在每一轮训练中,所有仍需训练的士兵都会参与。这一轮只有两种 阅读全文
posted @ 2026-03-31 00:32 kliu_365 阅读(22) 评论(0) 推荐(0)
摘要: P3367 并查集 模板题 🔗 原题链接 📌 问题描述 题目 现在有 \(n\) 个元素,分为若干个集合。需要支持两种操作: 合并操作 (\(z=1\)):将 \(x\) 和 \(y\) 所在的集合合并为一个集合 查询操作 (\(z=2\)):查询 \(x\) 和 \(y\) 是否在同一个集合中 阅读全文
posted @ 2026-03-30 18:30 kliu_365 阅读(8) 评论(0) 推荐(0)
TOP