专栏文章

题解:P11963 [GESP202503 六级] 环线

P11963题解参与者 6已保存评论 10

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
10 条
当前快照
1 份
快照标识符
@miptoftn
此快照首次捕获于
2025/12/03 17:46
3 个月前
此快照最后确认于
2025/12/03 17:46
3 个月前
查看原文

前言

提供一种考场上想到的线段树乱搞解法。

题目简介

一个环上有 nn 个点,第 ii 个点权值为 aia_i,当你来到一个点,就能取得这个点的权值。问:在最多绕一圈(经过 nn 个点)的情况下所能取到的最多的权值。

题解

先考虑暴力做法:
先断环为链,并维护一个前缀和数组 sumsum,枚举两个点 i,ji,j,保证 1i<j2n1 \le i < j \le 2n,找出 sumjsumisum_j-sum_i 的最大值即可。时间复杂度 O(n2)O(n^2)
这样显然会超时。考虑优化:
不难看出,在 sumisum_i 一定时,sumjsum_j 越大,结果就越大,也就越有可能冲击最优解。又因为 i<j2ni < j \le 2n,所以 sumjsumisum_j-sum_i 的最大值就是 maxi<j2nsumjsumi\max_{i < j \le 2n} sum_j -sum_i。于是问题就变成了寻找区间最大值,可以用线段树在 O(logn)O(\log n) 的时间内解出。这样,总的时间复杂度就变成了 O(nlogn)O(n \log n),可以通过。
最后还有一点:不要忘记开 long long

评论

10 条评论,欢迎与作者交流。

正在加载评论...