题目大意:给定一个 N 个数组成的序列,给定一个 T,求有多少个区间满足\(\sum_{i=l}^ra[i]<T\)。

题解:区间和问题可以用前缀和优化,即:求有多少个区间满足\(sum[r]-sum[l-1]<T\) 成立。移项得:\(sum[l-1]>sum[r]-T\),即:维护 sum 数组中的每个数,前面有多少数满足以上关系式。直接用平衡树维护即可。

代码如下

#include <bits/stdc++.h>
using namespace std;
const int maxn=2e5+10; struct node{
#define ls(x) t[x].lc
#define rs(x) t[x].rc
int lc,rc,rd,size,cnt;
long long val;
}t[maxn];
int tot,root;
inline void pushup(int p){
t[p].size=t[ls(p)].size+t[rs(p)].size+t[p].cnt;
}
inline int newnode(long long val){
++tot,t[tot].val=val,t[tot].rd=rand(),t[tot].cnt=t[tot].size=1;
return tot;
}
inline void zig(int &p){
int lson=ls(p);
ls(p)=rs(lson),rs(lson)=p,p=lson;
pushup(rs(p)),pushup(p);
}
inline void zag(int &p){
int rson=rs(p);
rs(p)=ls(rson),ls(rson)=p,p=rson;
pushup(ls(p)),pushup(p);
}
void insert(int &p,long long val){
if(!p)p=newnode(val);
else if(t[p].val==val)++t[p].size,++t[p].cnt;
else if(val<t[p].val){
++t[p].size,insert(ls(p),val);
if(t[ls(p)].rd>t[p].rd)zig(p);
}else{
++t[p].size,insert(rs(p),val);
if(t[rs(p)].rd>t[p].rd)zag(p);
}
}
int query(int p,long long val){
if(!p)return 0;
else if(t[p].val>val)return t[p].cnt+t[rs(p)].size+query(ls(p),val);
else return query(rs(p),val);
} int n;
long long m,ans,sum[maxn]; void read_and_parse(){
scanf("%d%lld",&n,&m);
for(int i=1;i<=n;i++)scanf("%lld",&sum[i]),sum[i]+=sum[i-1];
} void solve(){
insert(root,0);
for(int i=1;i<=n;i++){
ans+=query(root,sum[i]-m);
insert(root,sum[i]);
}
printf("%lld\n",ans);
} int main(){
read_and_parse();
solve();
return 0;
}

【CF1042D】Petya and Array的更多相关文章

  1. 【CF1042D】Petya and Array 离散化+树状数组

    题目大意:给定一个长度为 N 的序列,给定常数 t,求有多少个区间 [l,r] 满足 \(\sum\limits_{i=l}^{r}a_i<t\). 题解:先跑一边前缀和,问题等价于求有多少个数 ...

  2. 【02】[].slice和Array.prototype.slice

    [02][].slice和Array.prototype.slice 01,Array是一个构造函数.浏览器内置的特殊对象.   02,Array没有slice方法. 03,Array.prototy ...

  3. 【LeetCode】659. Split Array into Consecutive Subsequences 解题报告(Python)

    [LeetCode]659. Split Array into Consecutive Subsequences 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id ...

  4. 【Codeforces 1042D】Petya and Array

    [链接] 我是链接,点我呀:) [题意] 题意 [题解] 把a[i]处理成前缀和 离散化. 枚举i从1..n假设a[i]是区间和的a[r] 显然我们需要找到a[r]-a[l]<t的l的个数 即a ...

  5. 【leetcode81】Product of Array Except Self

    题目描述: 给定一个长度为n的整数数组Array[],输出一个等长的数组result[],这个输出数组,对应位置i是除了Array[i]之外,其他的所有元素的乘积 例如: given [1,2,3,4 ...

  6. 【leetcode】905. Sort Array By Parity

    题目如下: 解题思路:本题和[leetcode]75. Sort Colors类似,但是没有要求在输入数组本身修改,所以难度降低了.引入一个新的数组,然后遍历输入数组,如果数组元素是是偶数,插入到新数 ...

  7. 【leetcode】Merge Sorted Array

    题目描述 Given two sorted integer arrays A and B, merge B into A as one sorted array. Note: You may assu ...

  8. 【转载】Java集合类Array、List、Map区别和联系

    Java集合类主要分为以下三类: 第一类:Array.Arrays第二类:Collection :List.Set第三类:Map :HashMap.HashTable 一.Array , Arrays ...

  9. 【Codeforces718C】Sasha and Array 线段树 + 矩阵乘法

    C. Sasha and Array time limit per test:5 seconds memory limit per test:256 megabytes input:standard ...

随机推荐

  1. Flask_admin 笔记六 modelView的内置方法

    增加model后端Flask-Admin对与之配合的数据库模型做了一些假设. 如果要实现自己的数据库后端,并且Flask-Admin的模型视图仍可按预期工作,则应注意以下事项:1) 每一个model必 ...

  2. centos7下安装php+memcached简单记录

    1)centos7下安装php 需要再添加一个yum源来安装php-fpm,可以使用webtatic(这个yum源对国内网络来说恐怕有些慢,当然你也可以选择其它的yum源) [root@nextclo ...

  3. 1013 C. Photo of The Sky

    传送门 [http://codeforces.com/contest/1013/problem/C] 题意 输入一个n代表n颗星星,输入2n个数,其中任意两个数代表一颗行星的坐标,问你把n个星星围起来 ...

  4. springboot整合druid连接池、mybatis实现多数据源动态切换

    demo环境: JDK 1.8 ,Spring boot 1.5.14 一 整合durid 1.添加druid连接池maven依赖 <dependency> <groupId> ...

  5. 关于对springboot程序配置文件使用jasypt开源工具自定义加密

    一.前言 在工作中遇到需要把配置文件加密的要求,很容易就在网上找到了开源插件 jasypt  (https://github.com/ulisesbocchio/jasypt-spring-boot# ...

  6. 小学四则运算APP 第一阶段冲刺

    需求分析 1.相关系统分析员向用户初步了解需求,然后用word列出要开发的系统的大功能模块,每个大功能模块有哪些小功能模块,对于有些需求比较明确相关的界面时,在这一步里面可以初步定义好少量的界面.[1 ...

  7. ES6.0简单了解

    Case 1:let.const var的缺陷 1.可以重复声明变量 2.无法限制修改(没有常量) 3.没有块级作用域 let和const可以弥补var的缺陷 let: 不能重复声明,用来声明变量,声 ...

  8. PAT 1014 福尔摩斯的约会

    https://pintia.cn/problem-sets/994805260223102976/problems/994805308755394560 大侦探福尔摩斯接到一张奇怪的字条:“我们约会 ...

  9. Appium学习笔记4_元素定位方法

    Appium之元素定位,如果对Android上如何使用工具获取页面元素有问题的,请转战到这:http://www.cnblogs.com/taoSir/p/4816382.html. 下面主要是针对自 ...

  10. App WebView实例化

    a,高级设置里的环境变量 jdk的配置 b,下载Google的sdk,里面直接包含eclipse 1,新建一个项目 2,起个名字 3,设么走不做,next 4,只操作选择显示的三种方式 5,next什 ...