题意:给你一个n 表示有n段连续的1序列 现在问你 在总长度为0~1e9-1的范围内有多少个大于0的子段

思路:假设我们统计了当前的前缀和 我们显然可以用树状数组维护一下前缀和 这样我们可以nlogn算出答案 但是对于1e7的数据 这样处理肯定会超时 所以我们考虑前缀和是一个每次变化都是1的折线

我们可以直接数组模拟lazy来求出答案

#include <bits/stdc++.h>
using namespace std;
const int N = 1e7+;
const int inf = 0x3f3f3f3f;
typedef long long ll;
const ll mod = 1e7+;
int l[N],r[N];
int f[N],g[N],sum[*N];
int b[*N],c[*N];
int main(){
ios::sync_with_stdio(false);
cin.tie(); cout.tie();
int n; cin>>n;
for(int i=;i<=n;i++){
cin>>l[i]>>r[i];
}
f[]=r[]-l[]+;
for(int i=;i<=n;i++)
f[i]=max(r[i]-l[i]+,f[i-]-(l[i]-r[i-]-)+r[i]-l[i]+);
g[n]=r[n]-l[n]+;
for(int i=n-;i>=;i--)
g[i]=max(r[i]-l[i]+,g[i+]-(l[i+]-r[i]-)+r[i]-l[i]+);
int i=; int now=1e7;
ll ans=;
while(i<=n){
int j=i+;
while(j<=n&&g[j]+f[j-]>=(l[j]-r[j-]-)){
j++;
}
j--;
int le=max(,l[i]-g[i]); int ri=min(int(1e9)-,r[j]+f[j]);
int t=i; int mx,mi; mx=-; mi=inf;
for(int k=le;k<=ri;k++){
if(k>=l[t]&&k<=r[t])
sum[k-le+]=sum[k-le]+;
else
sum[k-le+]=sum[k-le]-;
if(k==r[t]) t++;
mx=max(mx,sum[k-le+]+now);
mi=min(mi,sum[k-le+]+now);
b[sum[k-le+]+now]++;
}
for(int k=mx-;k>=mi;k--)
b[k]+=b[k+];
ans+=b[now+];
for(int k=le;k<=ri;k++){
t=sum[k-le+]+now;
b[t+]-=c[t+];
c[t]+=c[t+]+;
c[t+]=;
ans+=b[t+];
}
for(int k=mi;k<=mx;k++)
b[k]=,c[k]=;
i=j+;
}
cout<<ans<<endl;
}

最新文章

  1. HikariCP
  2. jQuery漂亮图标的垂直导航菜单
  3. JavaScript设计模式——单体模式
  4. [BZOJ 4436][Cerc2015]Kernel Knights
  5. 搭建EF6.0+MVC4搭建框架遇到的问题及解决方案
  6. Codeforces Round #248 (Div. 2) C. Ryouko&#39;s Memory Note (vector 替换)
  7. win32 摄像头捕获系统vfw
  8. load-store/register-memory/register-plus-memory比较
  9. c语言二维数组变色龙之死字的打印
  10. sql查询语句优化需要注意的几点
  11. UIDynamic物理仿真
  12. Node笔记三
  13. 并发编程(十二)—— Java 线程池 实现原理与源码深度解析 之 submit 方法 (二)
  14. [Oracle]Sqlplus 中使用 new_value
  15. idea中springboot项目设置热部署
  16. Asp.net MVC - 使用PRG模式(附源码)
  17. Determine YARN and MapReduce Memory Configuration Settings
  18. python包中__init__.py的作用
  19. WebSockets通信
  20. 多进程共享数据,真正的通信Manager

热门文章

  1. fenby C语言 P32
  2. Linux下安装db2V9.7
  3. 阿里规范不建议多表Join,可这SQL要怎么写?
  4. 关于RocketMQ消息消费与重平衡的一些问题探讨
  5. 自闭版节奏大C
  6. Linux 下的 redis安装
  7. RabbitMQ-交换机模式
  8. NOIP的模板--考前复习
  9. vue实现tab选项卡切换效果
  10. ssm整合的登录