CF - 1333C

CF - 1333C

题目定义good数列:不含有和为0子串的的数列。
给定一个数组,问其中多少子串是good数列。

运用dp的思想,设dp[i]是前i个数的good子串数量,已知dp[i-1]求dp[i]时,就要找到从1到i,起点pos最靠右的子串,该子串和为0,那么新增的good子串数就是i-pos。
为了维护pos,前缀和sum[i]已知,只要找到sum[k],sum[k]==sum[i],就知道了包含i元素的起点最靠右的0子串(k+1),至于不包含i元素的0子串,那就一定在求dp[i]之前已经求出来了。用map维护当前前缀和最靠右位置。

  • 代码
  • //pos是【起点最靠右的0子串】的起点-1,初始化-1;
  • //map中要插入p[0] = 0;
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<set>
#include<map>
#include<list>
#include<stack>
#include<queue>
#include<vector>
#define cl (k<<1)
#define cr (k<<1|1)
#define Mid ((a[k].l+a[k].r)>>1)
#define mem(a,x) memset(a,x,sizeof(a))
using namespace std;
#define bug printf("???\n")

typedef long long LL;

const int Inf=0x3f3f3f3f;
const double eps=1e-8;
const int maxn=2e5+50;

map<LL,int>p;
LL sum[maxn];


int main()
{
    int n;
    cin>>n;
    LL ans=0;
    p[0] = 0;
    int pos=-1;
    for(int i=1; i<=n; i++){
        scanf("%lld",&sum[i]);
        sum[i] += sum[i-1];
        if(p.count(sum[i])) pos = max(pos, p[sum[i]]);
        ans += i-(pos+1);
        p[sum[i]] = i;
    }
    cout<<ans<<endl;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
xjc-cf3600-c压力显示表是一种专门用于测量和显示系统内部压力的设备。该表具有以下特点和功能。 首先,xjc-cf3600-c压力显示表具有高精度和稳定性。它采用先进的传感技术和精密的测量装置,能够准确地测量系统内部的压力值,并且在长时间使用过程中保持稳定的工作状态。这使得该表能够提供可靠的压力数据,为系统运行提供准确的参考。 其次,xjc-cf3600-c压力显示表具有直观的显示界面。它采用大屏幕液晶显示屏,能够清晰地显示出当前的压力数值。同时,该表还提供灯光背光功能,使得在暗处或夜间也能清晰地读取显示结果。这样,操作人员可以方便地观察和记录压力情况。 此外,xjc-cf3600-c压力显示表还具有多种报警功能。它能够根据预设的上下限值,自动发出声音或灯光报警信号,提醒操作人员系统内部压力超过规定范围,以便及时采取措施。这种报警功能有效地保护系统的安全运行,防止因过高或过低的压力而导致的损坏或事故发生。 最后,xjc-cf3600-c压力显示表具有良好的耐用性和可靠性。它采用高品质的材料和工艺制作而成,具有较强的抗震、耐腐蚀和抗干扰能力。此外,该表还具有防水、防尘和防爆等特性,能够适应各种恶劣的工作环境。 总之,xjc-cf3600-c压力显示表是一种功能强大的压力测量和显示设备,具有高精度、直观的显示界面、多种报警功能以及良好的耐用性和可靠性。它可以广泛应用于各种工业领域,为系统运行提供准确的压力监测和控制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值