S星球由 n 个国家组成,每个国家的实力为 a_i . 小明提出了结盟的想法,但每个国家的想法不一,有的同意结盟,有的不同意结盟. 因为小明的国际实力,他可以选择一个长度为 k 的区间 [i,i+k-1](1≤ i ≤ n+1-k) ,并让区间内的国家强行同意结盟. 小明想问问你结盟国家的实力和最大是多少.
第一行两个整数 n,k ,表示国家数和小明可以说服的区间长度 (1≤ k ≤ n ≤ 1e5) 第二行 n 个整数 a_i ,表示第 i 个国家的实力 (1≤ a_i ≤ 1e5) 第三行 n 个整数 b_i ,表示第i个国家是否支持结盟,如果 b_i =1 则表示支持,反之不支持 (0≤ b_i ≤ 1)
一个整数,保证结果.
3 1 2 5 4 0 0 1
9
4 3 10 5 4 7 0 1 1 0
19
4 2 1 1 3 3 0 0 1 1
8
考点:滑动窗口
数据规模 n ≤ 1e5 | 限制 1 秒 / 256MB | 标准输入输出
推荐方向:滑动窗口
本题切入点
长度为 k 的区间实力和最大,先累加支持结盟的实力和,再用滑动窗口枚举被强行说服的区间带来的增量。
维护一个连续区间,进一个元素出一个元素,区间内统计量增量更新。
思路框架(滑动窗口 通法 · 非本题专属)
实现要点:注意窗口长度是定长还是不定长:定长则区间长度固定为 k,不定长则靠条件收缩。
复杂度:时间 O(n) | 空间 O(字符集/去重元素数)
该范式的通法易错点
对照本题
样例 1:输入 3 1 / 2 5 4 / 0 0 1 → 输出 9
小明选择让区间[2,2]即实力为5的这个国家强行同意结盟,故有结盟意向的国家总共为9 = 5 + 4
样例 2:输入 4 3 / 10 5 4 7 / 0 1 1 0 → 输出 19
小明选择让区间[1,3]这些国家强行同意结盟,故有结盟意向的国家总共为9 = 10+5+4
样例 3:输入 4 2 / 1 1 3 3 / 0 0 1 1 → 输出 8
小明选择让区间[1,2]这些国家强行同意结盟,故有结盟意向的国家总共为1+1+3+3=8
解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:【2023】贝壳找房春招前端工程师笔试卷2;【2023】贝壳找房春招测试开发工程师笔试卷2。