首页 > 智乃的最大子段和取模
头像 月亮今天园
发表于 2026-02-15 16:14:36
题面: 思路: 通过前缀和的思想,从0开始,当前值即为(sum+a[i])%p,用upper_bound查看map中是否有比当前值大的,如果有,那必然是比当前值少了k倍的p,那么起点则为upper出来的值,如果没有,则起点为0,比较当前(sum减去起点处的前缀和值加p)%p是否大于当前最大值,如果 展开全文
头像 szut092225205
发表于 2026-02-16 15:25:10
题目如上: 题解: 题目意思 给你 n 个数字和一个数 p,要找一个连续的子段,使得这个子段的和除以 p 的余数最大。 比如数组 [3,4,5,6,7],p=10;选子段 [2,3],和是 4+5=9,9%10=9,余数最大,输出:2 3 9 关键想法 1. 用前缀和简化 子段 [l, r]的和除以 展开全文
头像 枫林叶233
发表于 2026-02-17 14:38:42
题目 输入 输出 思路 题目要求最大的子段和,可以先将数组求前缀和,转换为求最大的sum[r]-sum[l-1]。 同时由于要对p进行取模,所以前缀和的数据并非递增的,sum[r]-sum[l-1]就可能为负数,进而结果就要加p,保证取模结果是正数。 对r进行遍历,要使子段和最大l有两者情况。 展开全文
头像 define_int_long_long
发表于 2026-02-21 14:46:50
E题 | 智乃的最大子段和取模 解题思路: 为了 求解区间和,本题需要先求前缀和并取模。用 表示区间 的和取模 。 在固定右端点 的情况下,要想让区间和 最大, 有两种可能取值: 要么尽可能小,要么刚好比 大一点点(此时减为负数,需要加上一个p)。 先说结论:对于每个 ,只需找第一个 展开全文

等你来战

查看全部