欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C. Good Subarraystime

程序员文章站 2024-03-05 18:14:07
...

C. Good Subarraystime

我们可以将这道题变换成为看相同的序列有多少个
前一个序列和后一个序列和相等,以为中间这一段数字都是一样的,符合要求的
我们将数字减去'1'代表着:我们将一个相加的数列变为看一段是不是有字符串是不是为0的
#include<bits/stdc++.h>
using namespace std;int T,n;
string s;map<int,int>mp;
int main(){
	cin>>T;
	while(T--){mp.clear(); 
		cin>>n>>s;mp[0]++;
		long long ans=0,sum=0;
		for(int i=0;i<n;i++){
			sum+=s[i]-'1'; 
			ans+=mp[sum];mp[sum]++;
		}
		cout<<ans<<endl;
	}
}


相关标签: 刷题心得 算法