Codeforces 1042 D Petya and Array
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相关推荐
- Codeforce 1042 D. Petya and Array(树状数组、前缀和)
题目链接 省赛选拔学长说是CF的原题,赛后得知学长是用树状数组写的,补了一个树状数组的代码. 题意 NNN个数,问一共有多少个连续区间满足区间和小于 MMM 思路 记录每个数的前缀和sortsorts ...
- CF1042D Petya and Array 树状数组
题目描述 Petya has an array a a a consisting of n n n integers. He has learned partial sums recently, an ...
- 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 + . . . ...
- ★☆★cf D. Petya and Array
http://codeforces.com/problemset/problem/1042/D 抽象成一个问题:一边增加数组长度,增加之后再随机找小于某阈值的数的个数. 树状数组,离散化,模拟运行一遍 ...
- codeforces 111A/112C Petya and Inequiations
题目:Petya and Inequiations 传送门: http://codeforces.com/problemset/problem/111/A http://codeforces.com/ ...
- Codeforces Round 722C:Destroying Array(离线)
C. Destroying Array time limit per test 1 second memory limit per test 256 megabytes input standard ...
- D. Petya and Array(树状数组 + 前缀和 + 逆序对的思想)
Problem - D - Codeforces Petya 有一个由 n 个整数组成的数组 a.他最近学习了部分和,现在他可以非常快地计算出数组中任何一段元素的和.这个段是一个非空的序列,相邻的元素 ...
- [题解]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.由此 ...
- 【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 ...
- codeforces 361 D. Levko and Array(dp+二分)
题目链接:http://codeforces.com/contest/361/problem/D 题意:最多可以修改K次数字,每次修改一个数字变成任意值,C=max(a[i+1]-a[i]):求操作之 ...
最新文章
- php 回复可见,Typecho完美实现回复可见功能
- 好好说说Java中的常量池之Class常量池
- 1.16 static关键字(静态变量和静态方法)
- HMM学习(3)-Patterns generated by a hidden process
- QT的QQmlProperty类的使用
- Springboot分层图解
- eclipse 编辑 python 中文乱码的解决方案
- python基础--语句
- Python 文本转语音
- 计算机桌面底边出现库如何去掉,Win7电脑桌面图标有蓝底如何去掉?
- b B kb kB kbps KBps 换算
- Linux下的数学工具Maxima 简明教程(上)
- 管理Java类路径(Windows)
- java隐藏手机号中间四位和隐藏邮箱
- 每日任务:1276. 不浪费原料的汉堡制作方案
- 校园闲置物品交易平台毕业设计学习
- 【翻译】(design-2)风格
- 在Matlab图片里输入数学公式、符号和希腊字母等
- 了解D-Galactopyranose pentaacetate,CAS号25878-60-8的性质和应用
- VSCode:一个温馨不扎眼的暗色主题推荐
热门文章
- stack(栈)数据结构详解
- 【OCP-052】052认证考试新题库整理-第9题
- 递增三元数组——第九届蓝桥杯C语言B组(省赛)第六题
- BIND rndc—使用说明
- debian-nagios3.2,linux+apache+mysql+php
- 深度解析javascipt2
- SpringSecurity3.0.4的An AuthenticationManager is...
- Java判段两个日期的先后
- mybatis编写一个查询数据库表的程序
- linux任务计划、chkconfig工具、systemd、unit和target介绍