专栏文章
CF958F2 Lightsabers (medium)
CF958F2题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miosqztn
- 此快照首次捕获于
- 2025/12/03 00:32 3 个月前
- 此快照最后确认于
- 2025/12/03 00:32 3 个月前
CF958F2 Lightsabers (medium) 解题记录
题目分析
很明显的双指针。
考虑动态维护桶,同时统计当前已经满足条件的数的个数以及溢出的个数。
时间复杂度 。
代码
CPPCI N = 2e5 + 5;
int n, m, ans = 1e9, cnt, sum, a[N], b[N], v[N];
signed main() {
n = read(), m = read();
arrin(a, n);
arrin(b, m);
rep(i, 1, m) if(!b[i]) cnt ++;
for(int i = 1, j = 0; i <= n; i ++) {
while(cnt < m && j < n || j < i) j ++, cnt += ++v[a[j]] == b[a[j]], sum += v[a[j]] > b[a[j]];
if(cnt == m) ans = std::min(ans, sum);
cnt -= --v[a[i]] < b[a[i]], sum -= v[a[i]] >= b[a[i]];
}
print(ans == 1e9 ? -1 : ans);
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...