1.题意

给出一个数组,元素有正有负有0,问其区间和大于K的子区间的个数。

2.解法

若直接求所有区间和,有n^2个状态,显然是要直接略过一些状态。
对这类问题,解决方法一般是排序——利用单调性,在处理到某个状态时不和要求,则其后的状态也不合要求,continue。

对于本题,有个技巧:我们运用二分。对于[l,r]之间的子区间,我们只考虑跨越区间中点mid的子区间。
首先,我们要从mid开始向左构造后缀和suf,向右构造前缀和pre,进而通过任意的suf+pre产生一个区间和。
然后,我们把suf和pre们按照升序排序。
道理是很清晰的,既然任一suf+任一pre都能产生一个经过mid的子区间的区间和,我们必然希望让suf和pre都尽可能小,直到suf+pre达到阈值K——那余下的suf+pre也必然大于K,便不做考虑。

核心思路就是利用单调性忽略部分状态。

3.代码

注意有数字超过INT_MAX,要用longlong。

Codeforces 1042 D Petya and Array相关推荐

  1. Codeforce 1042 D. Petya and Array(树状数组、前缀和)

    题目链接 省赛选拔学长说是CF的原题,赛后得知学长是用树状数组写的,补了一个树状数组的代码. 题意 NNN个数,问一共有多少个连续区间满足区间和小于 MMM 思路 记录每个数的前缀和sortsorts ...

  2. CF1042D Petya and Array 树状数组

    题目描述 Petya has an array a a a consisting of n n n integers. He has learned partial sums recently, an ...

  3. Problem - 1042D - D. Petya and Array(树状数组)

    D. Petya and Array 题目大意:给定长度为 n n n的序列 a a a,求出有多少组 l , r l,r l,r使得 a l + a l + 1 + a l + 2 + . . . ...

  4. ★☆★cf D. Petya and Array

    http://codeforces.com/problemset/problem/1042/D 抽象成一个问题:一边增加数组长度,增加之后再随机找小于某阈值的数的个数. 树状数组,离散化,模拟运行一遍 ...

  5. codeforces 111A/112C Petya and Inequiations

    题目:Petya and Inequiations 传送门: http://codeforces.com/problemset/problem/111/A http://codeforces.com/ ...

  6. Codeforces Round 722C:Destroying Array(离线)

    C. Destroying Array time limit per test 1 second memory limit per test 256 megabytes input standard ...

  7. D. Petya and Array(树状数组 + 前缀和 + 逆序对的思想)

    Problem - D - Codeforces Petya 有一个由 n 个整数组成的数组 a.他最近学习了部分和,现在他可以非常快地计算出数组中任何一段元素的和.这个段是一个非空的序列,相邻的元素 ...

  8. [题解]Codeforces Round #519 - B. Lost Array

    [题目] B. Lost Array [描述] Bajtek有一个数组x[0],x[1],...,x[k-1]但被搞丢了,但他知道另一个n+1长的数组a,有a[0]=0,对i=1,2,...,n.由此 ...

  9. 【CodeForces - 361D】Levko and Array (二分,dp)

    题干: Levko has an array that consists of integers: a1, a2, ... , an. But he doesn't like this array a ...

  10. codeforces 361 D. Levko and Array(dp+二分)

    题目链接:http://codeforces.com/contest/361/problem/D 题意:最多可以修改K次数字,每次修改一个数字变成任意值,C=max(a[i+1]-a[i]):求操作之 ...

最新文章

  1. php 回复可见,Typecho完美实现回复可见功能
  2. 好好说说Java中的常量池之Class常量池
  3. 1.16 static关键字(静态变量和静态方法)
  4. HMM学习(3)-Patterns generated by a hidden process
  5. QT的QQmlProperty类的使用
  6. Springboot分层图解
  7. eclipse 编辑 python 中文乱码的解决方案
  8. python基础--语句
  9. Python 文本转语音
  10. 计算机桌面底边出现库如何去掉,Win7电脑桌面图标有蓝底如何去掉?
  11. b B kb kB kbps KBps 换算
  12. Linux下的数学工具Maxima 简明教程(上)
  13. 管理Java类路径(Windows)
  14. java隐藏手机号中间四位和隐藏邮箱
  15. 每日任务:1276. 不浪费原料的汉堡制作方案
  16. 校园闲置物品交易平台毕业设计学习
  17. 【翻译】(design-2)风格
  18. 在Matlab图片里输入数学公式、符号和希腊字母等
  19. 了解D-Galactopyranose pentaacetate,CAS号25878-60-8的性质和应用
  20. VSCode:一个温馨不扎眼的暗色主题推荐

热门文章

  1. stack(栈)数据结构详解
  2. 【OCP-052】052认证考试新题库整理-第9题
  3. 递增三元数组——第九届蓝桥杯C语言B组(省赛)第六题
  4. BIND rndc—使用说明
  5. debian-nagios3.2,linux+apache+mysql+php
  6. 深度解析javascipt2
  7. SpringSecurity3.0.4的An AuthenticationManager is...
  8. Java判段两个日期的先后
  9. mybatis编写一个查询数据库表的程序
  10. linux任务计划、chkconfig工具、systemd、unit和target介绍