CF1398C. Good Subarrays(思维 前缀和)

简介: CF1398C. Good Subarrays(思维 前缀和)

linkkkk

题意:

求满足∑ i = l r a i = r − l + 1的子区间个数。

思路:

开始写了个降智代码;

实际上令b i = a i − 1,那么式子就变成了∑ i = l r b i = 0

经 典 题

记录一下这个小思维

代码:

// Problem: C. Good Subarrays
// Contest: Codeforces - Educational Codeforces Round 93 (Rated for Div. 2)
// URL: https://codeforces.com/problemset/problem/1398/C
// Memory Limit: 256 MB
// Time Limit: 2000 ms
// 
// Powered by CP Editor (https://cpeditor.org)
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1e5+100;
int n,a[maxn];
map<ll,ll>mp;
int main(){
  int _;cin>>_;
  while(_--){
    cin>>n;
    for(int i=1;i<=n;i++) scanf("%1d",&a[i]),a[i]--;
    ll ans=0,sum=0;
    mp.clear();
    mp[0]=1;
    for(int i=1;i<=n;i++){
      sum+=a[i];
      ans=ans+mp[sum];
      mp[sum]++;
    }
    cout<<ans<<endl;
  }
  return 0;
}
目录
相关文章
|
11月前
ACM刷题之路(十四)逆元取模 Travel along the Line
ACM刷题之路(十四)逆元取模 Travel along the Line
|
9月前
|
机器学习/深度学习 算法
CF1029A Many Equal Substrings(kmp!!!!最通俗易懂的文章模板)
CF1029A Many Equal Substrings(kmp!!!!最通俗易懂的文章模板)
34 0
|
9月前
|
数据库管理
CF1547B Alphabetical Strings(了解字符串的的一些规律)
CF1547B Alphabetical Strings(了解字符串的的一些规律)
62 0
每日一题---1005. K 次取反后最大化的数组和[力扣][Go]
每日一题---1005. K 次取反后最大化的数组和[力扣][Go]
每日一题---1005. K 次取反后最大化的数组和[力扣][Go]
牛客hot100--BM88---判断是否为回文字符串(入门难度)
牛客hot100--BM88---判断是否为回文字符串(入门难度)
78 0
牛客hot100--BM88---判断是否为回文字符串(入门难度)
|
存储 测试技术
牛客hot100--BM50---两数之和(简单难度)
牛客hot100--BM50---两数之和(简单难度)
104 0
牛客hot100--BM50---两数之和(简单难度)
|
测试技术
牛客hot100--BM17---二分查找I(简单难度)
牛客hot100--BM17---二分查找I(简单难度)
89 0
牛客hot100--BM17---二分查找I(简单难度)
CF817C.Really Big Numbers(二分 思维)
CF817C.Really Big Numbers(二分 思维)
52 0
CF1567D. Expression Evaluation Error(思维 贪心)
CF1567D. Expression Evaluation Error(思维 贪心)
48 0
|
Windows
CF1343E. Weights Distributing(最短路 枚举 思维)
CF1343E. Weights Distributing(最短路 枚举 思维)
57 0

热门文章

最新文章