题意:

长度为1e91e9的(1,−1)(1,−1)序列,下标从00到1e9−11e9−1,已知有nn个区间为11,其他为−1−1, 问存在多少个区间的和>1>1(保证∑1≤i≤nr[i]−l[i]+1≤1e7∑1≤i≤nr[i]−l[i]+1≤1e7).

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

题解

  • 可能作为区间端点的点个数最多为3e73e7
  • f[i]表示以第ii个区间右端点为答案右端点的最大区间和
  • g[i]表示以第ii个区间左端点为答案左端点的最大区间和
  • f[i]=max(0,f[i−1]−(l[i]−r[i−1]−1))+r[i]−l[i]+1
  • g[i]=max(0,g[i+1]−(l[i+1]−r[i]−1))+r[i]−l[i]+1
  • 如果f[i]+g[i+1]≥l[i+1]−r[i]−1,说明答案的左右端点可以跨越[r[i]+1,l[i+1]−1],那么把这些合并考虑
  • 搞完上面,问题就变成了给你一个长度不超过3e7的(1,−1)序列,问有多少区间和大于1
  • 树状数组时间O(n∗logn),稳T
  • 考虑优化:
  • 很好用的性质:每次查询与上次查询的差距等于1
  • 从左到右枚举左端点,统计右边比当前值大的个数
  • 加个标记,标记左移,稳
#include <iostream>
using namespace std; const int N = 1e6 + ;
const int M = 4e7 + ; typedef long long ll;
int l[N], r[N], L[N], R[N];
ll num[M]; int main() {
int n;
cin >> n;
for (int i = ; i <= n; i++) {
cin >> l[i] >> r[i];
}
l[] = r[] = L[] = R[] = -, l[n + ] = r[n + ] = 1e9;
int len = ;
for (int i = ; i <= n; i++) {
len += r[i] - l[i] + ;
R[i] = min(r[i] + len, l[i + ] - );
len -= l[i + ] - r[i] - ;
if (len < )
len = ;
}
len = ;
for (int i = n; i >= ; i--) {
len += r[i] - l[i] + ;
L[i] = max(l[i] - len, r[i - ] + );
len -= l[i] - r[i - ] - ;
if (len < )
len = ;
}
int now = 2e7 + ;
ll sum = ;
num[now] = ;
ll ans = ;
for (int i = ; i <= n; i++) {
for (int j = max(L[i], R[i - ] + ); j <= R[i]; j++) {
if (j >= l[i] && j <= r[i]) {
sum += num[now];
num[++now]++;
} else {
sum -= num[--now];
num[now]++;
}
ans += sum;
}
}
cout << ans << endl;
return ;
}

团队通过代码

参考博客:

https://blog.csdn.net/qq_40791842/article/details/96736137

https://blog.csdn.net/qq_40871466/article/details/97104326

https://blog.csdn.net/toohandsomeieaseid/article/details/98848517

https://www.cnblogs.com/Yinku/p/11221494.html

https://www.cnblogs.com/wmj6/p/11288038.html

2场 J -Subarray的更多相关文章

  1. 牛客多校第3场 J 思维+树状数组+二分

    牛客多校第3场 J 思维+树状数组+二分 传送门:https://ac.nowcoder.com/acm/contest/883/J 题意: 给你q个询问,和一个队列容量f 询问有两种操作: 0.访问 ...

  2. 2019牛客暑期多校训练营(第二场)J.Subarray

    题意:给你一个n 表示有n段连续的1序列 现在问你 在总长度为0~1e9-1的范围内有多少个大于0的子段 思路:假设我们统计了当前的前缀和 我们显然可以用树状数组维护一下前缀和 这样我们可以nlogn ...

  3. 2014多校第一场J题 || HDU 4870 Rating(DP || 高斯消元)

    题目链接 题意 :小女孩注册了两个比赛的帐号,初始分值都为0,每做一次比赛如果排名在前两百名,rating涨50,否则降100,告诉你她每次比赛在前两百名的概率p,如果她每次做题都用两个账号中分数低的 ...

  4. 2014 HDU多校弟六场J题 【模拟斗地主】

    这是一道5Y的题目 有坑的地方我已在代码中注释好了 QAQ Ps:模拟题还是练的太少了,速度不够快诶 //#pragma comment(linker, "/STACK:16777216&q ...

  5. 2014 HDU多校弟五场J题 【矩阵乘积】

    题意很简单,就是两个大矩阵相乘,然后求乘积. 用 Strassen算法 的话,当N的规模达到100左右就会StackOverFlow了 况且输入的数据范围可达到800,如果变量还不用全局变量的话连内存 ...

  6. hdu第4场j.Let Sudoku Rotate

    Problem J. Let Sudoku Rotate Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total Su ...

  7. 牛客第二场 J farm

    White Rabbit has a rectangular farmland of n*m. In each of the grid there is a kind of plant. The pl ...

  8. 牛客网暑期ACM多校训练营(第二场)J farm (二维树状数组)

    题目链接: https://www.nowcoder.com/acm/contest/140/J 思路: 都写在代码注释里了,非常好懂.. for_each函数可以去看一下,遍历起vector数组比较 ...

  9. 牛客多校第五场 J:Plan

    链接:https://www.nowcoder.com/acm/contest/143/J 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524 ...

随机推荐

  1. js多物体多方向缓动动画加带有回调机制

    一.获取一组div元素 var boxs = document.getElementsByTagName('div'); 二.封装获取属性值的函数 function getStyle(dom, att ...

  2. Python装饰器基础

    一.Python装饰器引入 讲 Python 装饰器前,我想先举个例子,虽有点污,但跟装饰器这个话题很贴切. 每个人都有的内裤主要功能是用来遮羞,但是到了冬天它没法为我们防风御寒,咋办?我们想到的一个 ...

  3. WinDbg命令系统

    WinDbg命令系统 WinDbug三种命令 WinDbug是一个强大的调试器,大部分很多功能都是通过命令来实现的,命令在命令窗口中输入,主要分为以下三类: 标准命令 标准命令提供了调试器的基本功能, ...

  4. Unity3D图像后处理特效——Depth of Field 3.4

    Depth of Field 3.4 is a common postprocessing effect that simulates the properties of a camera lens. ...

  5. tomcat 7.0 免安装版配置

    转载请注明出处,欢迎邮件交流:1057449102@qq.com 注意:tomcat 运行是依赖jdk的,前提是要安装了jdk,配置好. 1.把下载好的 apache-tomcat-7.0.85.zi ...

  6. python解释器执行文件的流程

    一: 启动python解释器,加载内置模块. 找到主文件读入内存,这里涉及到编码问题,一般都是utf8 解释器拿到主文件开始语法词法分析,编译然后执行

  7. mha格式的CT体数据转为jpg切片

    mha格式的CT体数据转为jpg切片 mha格式 .mha文件是一种体数据的存储格式,由一个描述数据的头和数据组成,一般我们拿到的原始医学影像的数据是.dcm也就是dicom文件,dicom文件很复杂 ...

  8. deepin扬声器/耳机没有声音解决方案

    昨天准备在deepin系统下看视频学习一下Linux,结果登入deepin系统后发现不论是外放还是插耳机竟然都没有声音,这种情况以前也出现过,只不过没有在意,后来就自己又好了,今天这次可真是让我决定要 ...

  9. CAT客户端如何从Apollo中读取配置?

    运行环境 以下就是这个示例的运行环境,如果版本号不一样,区别也应该不会很大,可以根据实际情况做相应调整. JDK 8 spring boot 2.0.7.RELEASE cat-client 3.0. ...

  10. NOIP模拟 10

    (果然题目描述越人畜无害,题目难度越丧心病狂) (感觉T2大大锻炼了我的码力) T1 辣鸡 看见自己作为题目标题出现在模拟赛中,我内心无比激动 看完题面,一个N^2暴力思路已经成形 然后开始拼命想正解 ...