题目大意:求好数组的个数,所谓好数组 1好数组是原数组的一段连续的子数组,2 好数组不包含元素和为0的子数组。

题解:唉,这个题目把我给些懵了....我一开始的想法求后缀和,保存位置,然后枚举前缀和,二分查找大于当前位置的第一个后缀合,但是ai的范围太大了,位置保存不了,然后又瞎搞了很久....最后看的题解,没想到这么简单....(吐了)直接用前缀和,如果两个前缀和相等比如果说[1,l]和[1,r]那么[l+1,r],这段区间内的和一定为0,

然后好数组怎么求呢?当然就是[l+2,r],[l+3,r]....[r,r]。也就是他的区间长度。。。我们可以枚举没个前缀和,让i做右端点,然后用mp保存最右边的左端点。

code:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=2e5+;
map<ll,ll >mp;
int main(){
ll n;
cin>>n;
ll sum=;
ll tmp=;
mp[]=;
ll x,maxl=;
ll ans=;
for(ll i=;i<=n+;i++){
cin>>x;
sum+=x;
if(mp[sum]!=) maxl=max(maxl,mp[sum]+);
ans+=i-maxl;
mp[sum]=i;
}
cout<<ans<<endl;
return ;
}

最新文章

  1. table隔行变色
  2. C#常用控件介绍
  3. bzoj2219: 数论之神
  4. Android软件安全开发实践(下)
  5. java\c程序的内存分配
  6. kafka0.8.2以下版本删除topic
  7. I - Caocao&#39;s Bridges - hdu 4738(求桥)
  8. 1369 - Answering Queries(规律)
  9. Spring拦截器总结
  10. HDU--2114
  11. sftp无法连接问题
  12. cocos2d-x JS 本地玩家位置跟服务器玩家位置转换相关
  13. 一名前端Web架构师的成长之路(转载)
  14. [转载]C#中Invoke的用法()
  15. 【k8s】基础概念 + 工作原理
  16. ZooKeeper学习之文件系统的布局和格式
  17. Nginx缓存功能、防盗链、URL重写
  18. java 通用对象排序
  19. Windows和Linux系统如何退出python命令行
  20. 解决jquey中当事件嵌套时,内层事件会执行多次的问题

热门文章

  1. Selenium系列(六) - 强制等待、隐式等待、显式等待
  2. JavaScript----简介及基础语法
  3. fastText 训练和使用
  4. 蓝桥杯——一步之遥,扩展gcd的应用
  5. Java集合工具类使用的一些坑,Arrays.asList()、Collection.toArray()、foreach
  6. java两数相乘基础算法
  7. thinkphp 路径 (纯转)
  8. 力软敏捷框架7.0.6 葡萄城报表升级到ar14版本
  9. [leetcode] 位操作题解-2
  10. 用Python简单批量处理数据