AtCoder ABC468 F - Chmax - Solution
将 1~N 的排列依次分配到两个变量上,最大化"当前值小于新值"的计数。核心结论:前缀最大值必贡献,剩余元素的最大贡献数为其 LIS 长度,答案 = 前缀最大值个数 + LIS(剩余序列),时间复杂度 O(N log N)。
将 1~N 的排列依次分配到两个变量上,最大化"当前值小于新值"的计数。核心结论:前缀最大值必贡献,剩余元素的最大贡献数为其 LIS 长度,答案 = 前缀最大值个数 + LIS(剩余序列),时间复杂度 O(N log N)。
给定长度为 $N$ 的序列,求满足 $i < j < k$ 且 $a[i] < a[j] < a[k]$ 的三元组个数。$N \le 10^5$,$a_i \le 10^9$。通过枚举中间位置 $j$,利用权值树状数组分别统计左右两侧的可行元素个数,$O(N \log N)$ 解决。
本题给出 $m \times n$ 网格,每个格子有入口代价和罚金。从 $(0,0)$ 出发,第 $k$ 步移动方向由 $k$ 的奇偶性决定(奇数步只能右/下,偶数步只能左/上),违反规则或原地等待需支付罚金。分析指出朴素 DFS 因方向奇偶交替导致搜索空间巨大,进而将「位置 + 步数奇偶性」纳入状态,转化为 $2mn$ 个节点的隐式图,每条合法移动(含等待)建有权边,跑 Dijkstra 即可求解。文章详细推导了状态设计、转移规则,给出了 C++ 参考实现,并总结了 vis 标记时机、罚金归属、整数溢出等避坑要点。
利用康托展开 + 可重集排列计数,在 O(n·26·log n) 内求回文串所有不同排列按字典序排序后的第 k 个,通过剪枝提前判断无解情况。
1. 题目数据 (Problem Metadata) 题目类型:传统题 题目链接:Problem - 670C - Codeforces 时间限制:2 秒 内存限制:256 MB 2. 题意简述 (Problem Summary) 给定 $n...
NOI 2015 约束满足问题,利用并查集维护相等关系的传递性,离散化压缩变量编号后判定不等约束是否冲突,时间复杂度 O(n α(n))。
1. 题目数据 (Problem Metadata) 题目类型:传统题 题目链接:E - Sum of Average - AtCoder Beginner Contest 468 时间限制:2 秒 内存限制:1024 MB 2. 题意简述 ...
1. 题目数据 题目类型:传统题 题目链接:4002. 统计有效序列数目 - 力扣(LeetCode) 2. 题意简述 给定正整数 $n$ 与 $k$,求长度为 $k$ 的正整数序列 $(a_1, a_2, \dots, a_k)$ 的个数,...
LeetCode 3501「操作后最大活跃区段数 II」题解,基于 I 版结论将交易转化为相邻 0 块合并,用 Sparse Table 预处理相邻 0 块长度和的区间最大值,支持 O(log n) 单次查询。
1. 题目数据 (Problem Metadata) 题目类型:传统题 题目链接:P14361 [CSP-S 2025] 社团招新 - 洛谷 时间限制:1.00s 内存限制:512.00MB 2. 题意简述 (Problem Summary)...