题意

给一个长度为1e9的只包含1和-1的数列,1的个数不超过1e7,计算有多少对\((l,r)\)满足\(\sum_{i=l}^r a[i]>0\)

分析

dp求出每段连续的1最右端为右端点的最大子段和和最左端为左端点的最大子段和,可以得出这段1往左或右最远能扩到哪里,将相接的连续1段合并,合并后的每段区间和差值不会超过1e7,每段分别用桶来计数,细节很多要仔细想想..

Code

#include<bits/stdc++.h>
#define fi first
#define se second
#define pb push_back
#define ll long long
using namespace std;
const int inf=1e7+5;
const int mod=1e9+7;
const int maxn=1e7+10;
const int N=1e7+10;
int n,m;
int l[maxn],r[maxn];
int le[maxn],ri[maxn];
int tr[3*N];
int main(){
//ios::sync_with_stdio(false);
//freopen("in","r",stdin);
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d%d",&l[i],&r[i]);
}
int sum=0;
l[0]=r[0]=-1;l[n+1]=r[n+1]=1e9;
for(int i=1;i<=n;i++){
sum+=r[i]-l[i]+1;
if(sum>=l[i+1]-r[i]-1) sum-=l[i+1]-r[i]-1,ri[i]=l[i+1]-1;
else ri[i]=r[i]+sum,sum=0;
}sum=0;
for(int i=n;i>=1;i--){
sum+=r[i]-l[i]+1;
if(sum>=l[i]-r[i-1]-1) sum-=l[i]-r[i-1]-1,le[i]=max(0,l[i]-sum);
else le[i]=max(0,l[i]-sum),sum=0;
}
int mn=inf,mx=inf,pos=0,now=-1;
ll ans=0,ret=0;
for(int i=1;i<=n;i++){
if(now<le[i]){
for(int j=mn;j<=mx;j++) tr[j]=0;
ret=0;
mn=mx=pos=inf;
now=le[i];
tr[inf]=1;
}
while(now<l[i]){
ret-=tr[--pos];
tr[pos]++;
now++;
ans+=ret;
mn=min(mn,pos);
}
while(now<=r[i]){
ret+=tr[pos++];
tr[pos]++;
ans+=ret;
now++;
mx=max(mx,pos);
}
while(now<=ri[i]){
ret-=tr[--pos];
tr[pos]++;
now++;
ans+=ret;
mn=min(mn,pos);
}
}
printf("%lld\n",ans);
return 0;
}

2019牛客暑期多校训练营(第二场)J的更多相关文章

  1. 2019牛客暑期多校训练营(第二场) H-Second Large Rectangle(单调栈)

    题意:给出由01组成的矩阵,求求全是1的次大子矩阵. 思路: 单调栈 全是1的最大子矩阵的变形,不能直接把所有的面积存起来然后排序取第二大的,因为次大子矩阵可能在最大子矩阵里面,比如: 1 0 0 1 ...

  2. 2020牛客暑期多校训练营 第二场 J Just Shuffle 置换 群论

    LINK:Just Shuffle 比较怂群论 因为没怎么学过 置换也是刚理解. 这道题是 已知一个置换\(A\)求一个置换P 两个置换的关键为\(P^k=A\) 且k是一个大质数. 做法是李指导教我 ...

  3. 2020牛客暑期多校训练营 第二场 K Keyboard Free 积分 期望 数学

    LINK:Keyboard Free 我要是会正经的做法 就有鬼了. 我的数学水平没那么高. 三个同心圆 三个动点 求围成三角形面积的期望. 不会告辞. 其实可以\(n^2\)枚举角度然后算出面积 近 ...

  4. 2020牛客暑期多校训练营 第二场 I Interval 最大流 最小割 平面图对偶图转最短路

    LINK:Interval 赛时连题目都没看. 观察n的范围不大不小 而且建图明显 考虑跑最大流最小割. 图有点稠密dinic不太行. 一个常见的trick就是对偶图转最短路. 建图有点复杂 不过建完 ...

  5. 2020牛客暑期多校训练营 第二场 C Cover the Tree 构造 贪心

    LINK:Cover the Tree 最受挫的是这道题,以为很简单 当时什么都想不清楚. 先胡了一个树的直径乱搞的贪心 一直过不去.后来意识到这类似于最经典长链剖分优化贪心的做法 然后那个是求最大值 ...

  6. 2020牛客暑期多校训练营 第二场 B Boundary 计算几何 圆 已知三点求圆心

    LINK:Boundary 计算几何确实是弱项 因为好多东西都不太会求 没有到很精通的地步. 做法很多,先说官方题解 其实就是枚举一个点 P 然后可以发现 再枚举一个点 然后再判断有多少个点在圆上显然 ...

  7. 2020牛客暑期多校训练营 第二场 A All with Pairs 字符串hash KMP

    LINK:All with Pairs 那天下午打这个东西的时候状态极差 推这个东西都推了1个多小时 (比赛是中午考试的我很困 没睡觉直接开肝果然不爽 一开始看错匹配的位置了 以为是\(1-l\)和\ ...

  8. 2019牛客暑期多校训练营(第九场) D Knapsack Cryptosystem

    题目 题意: 给你n(最大36)个数,让你从这n个数里面找出来一些数,使这些数的和等于s(题目输入),用到的数输出1,没有用到的数输出0 例如:3  4 2 3 4 输出:0 0 1 题解: 认真想一 ...

  9. 2019牛客暑期多校训练营(第五场)G - subsequeue 1 (一题我真的不会的题)

    layout: post title: 2019牛客暑期多校训练营(第五场)G - subsequeue 1 (一题我真的不会的题) author: "luowentaoaa" c ...

  10. 2019牛客暑期多校训练营(第二场)F.Partition problem

    链接:https://ac.nowcoder.com/acm/contest/882/F来源:牛客网 Given 2N people, you need to assign each of them ...

随机推荐

  1. MySQL5.7,MySQL8 pfs,sys库使用

    MySQL5.7中performance和sys schema中的监控参数解释 在MySQL5.7中,performance schema有很大改进,包括引入大量新加入的监控项.降低占用空间和负载,以 ...

  2. css多种方式实现等宽布局

    本文讲的等宽布局是在不手动设置元素宽度的情况下,使用纯css实现各个元素宽度都相当的效果. 1.使用table-cell实现(兼容ie8) <style> body,div{ margin ...

  3. C# 日期格式化以及日期常用方法

    一.日期格式化 1.ToString() d 月中的某一天.一位数的日期没有前导零. dd 月中的某一天.一位数的日期有一个前导零. ddd 周中某天的缩写名称,在 AbbreviatedDayNam ...

  4. curl 的使用

    curl 的使用 作者:与蟒唯舞链接:https://www.jianshu.com/p/f05bbd5007d9 curl 是一种命令行工具,作用是发出网络请求,然后获取数据,显示在"标准 ...

  5. 【js】面向对象学习资料

    1.面向对象模式: https://m.jb51.net/article/74549.htm 2.面向对象基础篇 http://www.cnblogs.com/chiangchou/p/js-oop1 ...

  6. C# 斐波那契数列 第n项数字/前n项的和

    static void Main(string[] args) { int a = Convert.ToInt32(Console.ReadLine()); //求第n位数字是多少 Console.W ...

  7. axios跨域问题(包括开发环境和生产环境)

    之前写过一篇axios跨域问题,写的过于片面,没有考虑过实际开发中遇到的问题,以及如何全局使用axios,这次再写一篇,以后再有新发现再更新... 1.在static文件夹下新建/js/config. ...

  8. Dockerfile初体验

    Dockerfile构建nginx 创建一个文件夹 mkdir -p /nginx 进入创建的目录 cd /nginx 创建并编辑 添加下面两行 vim Dockerfile 行1,去本地找基础的镜像 ...

  9. C# 基础 字符串 集合 文件操作

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  10. Delphi TIdUDPServer组件