当前位置: 首页 > news >正文

day 3

今天下午打球了,没写题,晚上来写了两道,一道数学一道小思维
题目:https://codeforces.com/problemset/problem/1398/C
题目大意:求一个数组的子数组所有元素和等于子数组长度的数量。
数据量1e5,不能暴力,应该是前缀和。
由于子数组和为长度,那么所有元素减1后,子数组元素和都为零,原来可能是1~n,状态减少了,
我们想如果一个子数组和为0,那么在前缀和数组里表现为有两个数相等,表示他们两个之间的区间和为0,
所以用map统计所有前缀和出现的次数,再计算就行了,注意0的特判,因为0的长度可以是1。
代码:

include <bits/stdc++.h>

using namespace std;

typedef long long ll;

const int N = 200010;

void solve()
{
int n;
cin >> n;
string s;
cin >> s;
map<ll,ll> mp;
ll sum = 0;
ll ans = 0;
for(int i = 0;i<n;i++)
{
sum += s[i] - '0' - 1;
if(sum == 0) ans ++;
ans += mp[sum];
mp[sum] ++;
}
cout << ans << endl;
}

int main()
{
int t;
cin >> t;
while(t--)
{
solve();
}
return 0;
}

http://www.hskmm.com/?act=detail&tid=32622

相关文章:

  • PWN手的成长之路-18-ciscn_2019_ne_5-rettext
  • 技术人不用当“兼职运营”:2025微信编辑器实用指南,让产品更新日志/API教程产出效率提升3倍
  • 站位1
  • ubuntu2204系统ip地址配置
  • 10.16 —— 2021ccpc桂林D,B
  • day 2
  • 日志分析-windows日志分析base
  • 2025/10/16 模拟赛笔记 - sb
  • 课后作业3
  • KMP和Manacher
  • 10月16日日记
  • 日志|二叉树|404左叶子之和|112路径总和|129求根节点到叶子节点数字之和|
  • 第 5 天:C 语言运算符与表达式 —— 数据处理的优秀的工具集
  • mongoDB体验
  • TELUS如何通过Google技术栈实现业务增长与生产力跃升
  • 云服务器上部署 EasyTier中转服务器
  • 问世界
  • 为 .NET 10 GC(DATAS)做准备
  • LLM学习记录DAY3
  • 日总结 13
  • 黄景行电脑软件
  • 开源许可协议 gpl vs mit?
  • 二进制警报器
  • 题解:P8019 [ONTAK2015] OR-XOR
  • DP 思维好题(转载)
  • python sse的是什么?
  • idea代码阿里格式化
  • 万字长文详述单据引擎原理、流程、单据管理 - 智慧园区
  • windows 链接共享打印机出现错误0x00000709?打印机0x0000011b错误?0x0000bcd、0x00000709、0x00000011b
  • 解码Linux文件IO目录检索与文件属性