专栏文章

CF165C解题报告

个人记录参与者 1已保存评论 0

文章操作

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

当前评论
0 条
当前快照
1 份
快照标识符
@miqly46j
此快照首次捕获于
2025/12/04 06:57
3 个月前
此快照最后确认于
2025/12/04 06:57
3 个月前
查看原文

Solution

比较套路
当我们扫到位置ii时,设当前11的个数为sumsumii对答案的贡献就是sumksum-k的数量,用一个mapmap记录就好了
注意初始化mp[0]=1mp[0]=1

Code

CPP
#include<bits/stdc++.h>
using namespace std;
#define int long long
map<int,int> mp;
signed main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	
	int k;string s;
	cin>>k>>s;
	int n=s.size();s=' '+s;
	int sum=0;
	int ans=0;
	mp[0]=1;
	for(int i=1;i<=n;i++){
		if(s[i]=='1') sum++;
		
		ans+=mp[sum-k];
		mp[sum]++;
	}
	cout<<ans<<endl;
	return 0;
}

评论

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

正在加载评论...