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;
}
目录
相关文章
|
8月前
|
人工智能 BI
CF 1561 D. Up the Strip(数学+思维)
【7月更文挑战第5天】
63 10
|
9月前
CF 1538 G. Gift Set (贪心+思维)
【6月更文挑战第14天】
55 0
|
9月前
|
C++
【洛谷 B2025】输出字符菱形 题解(raw string literal)
使用`*`构建一个斜置的、对角线长度为5的菱形。无输入要求。输出示例:`*`、`***`、`*****`、`***`、` *`。代码实现使用C++,直接打印预定义字符串完成。
102 0
|
机器学习/深度学习 算法
CF1029A Many Equal Substrings(kmp!!!!最通俗易懂的文章模板)
CF1029A Many Equal Substrings(kmp!!!!最通俗易懂的文章模板)
66 0
|
机器学习/深度学习
CF189A Cut Ribbon(dp一维思想,完全背包最详细解析)
CF189A Cut Ribbon(dp一维思想,完全背包最详细解析)
114 0
|
存储 编译器
一次带你理清 ‘ || ’ 和 ‘ && ’ 和 ‘ ^ ’ 等常用操作符以及其余基本操作符(上)
一次带你理清 ‘ || ’ 和 ‘ && ’ 和 ‘ ^ ’ 等常用操作符以及其余基本操作符(上)
334 0
|
存储 编译器
一次带你理清 ‘ || ’ 和 ‘ && ’ 和 ‘ ^ ’ 等常用操作符以及其余基本操作符(下)
一次带你理清 ‘ || ’ 和 ‘ && ’ 和 ‘ ^ ’ 等常用操作符以及其余基本操作符(下)
314 0
每日一题---1816. 截断句子[力扣][Go]
每日一题---1816. 截断句子[力扣][Go]
每日一题---1816. 截断句子[力扣][Go]
牛客hot100--BM88---判断是否为回文字符串(入门难度)
牛客hot100--BM88---判断是否为回文字符串(入门难度)
117 0
牛客hot100--BM88---判断是否为回文字符串(入门难度)
|
存储 测试技术
牛客hot100--BM50---两数之和(简单难度)
牛客hot100--BM50---两数之和(简单难度)
149 0
牛客hot100--BM50---两数之和(简单难度)