Eugene and an array(边界麻烦的模拟)
2024-09-07 13:44:09
一道看似小学生的题,搞了我几个小时......
首先思路就有两种:
\(Ⅰ.找和为0的bad子串,再用n*(n+1)/2-bad子串得到答案\)
\(Ⅱ.找和不为0的good子串\)
如果你选择找bad子串就很麻烦了。(为什么呢?自己去试一试吧,不好说。)
这里找good子串,枚举每一个数作为区间的右端点。
\(那么往左找一个前缀和为0的左端点,答案贡献就是i-l+1\)
\(特殊的,对于第一个前缀和为0的要特判。\)
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=2e5+9;
ll n,a[maxn],sumn,ans,L=0;
map<ll,ll>m;
int main()
{
cin>>n;
int flag=0;
m[0]=0;
for(int i=1;i<=n;i++)
{
scanf("%lld",&a[i]);
sumn+=a[i];
if(m[sumn]) L=max(L,m[sumn]+1);
else if(sumn==0)//特判,也要更新
L=max(L,(ll)1);
ans+=i-L;
m[sumn]=i;
}
cout<<ans;
}
最新文章
- 二分图水一波~~~~d带你飞
- google protobuf使用
- Base64编码原理与应用
- mod_rewrite模块详解
- BIEE Setup
- (转)passwordStrength 基于jquery的密码强度检测代码使用介绍
- eclipse中误删了servers文件
- PHP专业开发IDE——Zend Studio 10.5预览版发布
- mysql存储过程详细讲解及完整实例下载
- 通过javap终极理解++i和i++的区别
- 【原创】大叔问题定位分享(10)提交spark任务偶尔报错 org.apache.spark.SparkException: A master URL must be set in your configuration
- | 线段树-地平线horizon
- [dev][ipsec] netlink是什么
- C#对XML操作类
- HTTP协议中长连接与短连接的区别
- 认识ZTree
- 算法笔记(C++)
- 20155229 2016-2017-2 《Java程序设计》第九周学习总结
- HDU 4283 You Are the One(区间DP(最优出栈顺序))
- 【RabbitMQ】3、工作队列模式(work模式)
热门文章
- https的秘钥公钥以及之间的会话流程
- 路径跟踪 PathMeasure的简单使用
- Redis学习三:Redis高可用之哨兵模式
- windows/linux下如何更换Python的pip源
- G - Messy codeforces1262C
- C. Primes and Multiplication
- 引用传参与reference_wrapper
- Java 8 到 Java 14,改变了哪些你写代码的方式?
- Maven+JSP+Servlet+JDBC+Redis+Mysql实现的黑马旅游网
- sublime查看项目代码多少行