A101794题解
2026-02-01 12:40:44
发布于:上海
6阅读
0回复
0点赞
#include <cstdlib>
#include<iostream>
#include<cstdio>
#include<vector>
#include<algorithm>
#include<map>
using namespace std;
long long n,a[200050],k,sum[200050],ans;
map<long long,int>mp;
int main(){
cin>>n>>k;
for (int i=1;i<=n;i++){
cin>>a[i];
sum[i]=sum[i-1]+a[i];
}
mp.insert(①);
for (int i=1;i<=n;i++){
long long tmp=sum[i]-k;
if (mp.find(tmp)②mp.end()){
ans+=mp[③];
}
if (mp.find(sum[i])④mp.end()){
mp.insert(⑤);
}
mp[sum[i]]++;
}
cout<<ans;
return 0;
}
①
{0,0}
{sum[1],1}
{0,1}
{sum[1],0}
②
<=
==
>=
!=
③
tmp
k
sum[i]
i
④
<=
==
>=
!=
⑤
{sum[tmp],1}
{sum[i],1}
{sum[tmp],0}
{sum[i],0}
#include <cstdlib>
#include<iostream>
#include<cstdio>
#include<vector>
#include<algorithm>
#include<map>
using namespace std;
long long n,a[200050],k,sum[200050],ans;
map<long long,int>mp;
int main(){
cin>>n>>k;
for (int i=1;i<=n;i++){
cin>>a[i];
sum[i]=sum[i-1]+a[i];
}
mp.insert({0,1});
for (int i=1;i<=n;i++){
long long tmp=sum[i]-k;
if (mp.find(tmp)!=mp.end()){
ans+=mp[tmp];
}
if (mp.find(sum[i])==mp.end()){
mp.insert({sum[i],0});
}
mp[sum[i]]++;
}
cout<<ans;
return 0;
}

这里空空如也



有帮助,赞一个