D - Petya and Array(树状数组,二分)
思路:对于al+..ara_l+..a_ral+..ar这种区间和问题一般都要考虑前缀差,然后问题就转化为了求sum[r]−sum[l−1]<tsum[r]-sum[l-1]<tsum[r]−sum[l−1]<t,对等式移项sum[r]−t<sum[l]sum[r]-t<sum[l]sum[r]−t<sum[l],然后又发现是要查询有几个前缀大于当前的前缀减去t,所以用树状数组把前序的前缀存起来,这里数据是1e9,所以判断大小不能直接比大小,用到排序,比较相对大小。还有就是注意树状数组查询和添加要搞到n+1.
const int N = 2e5 + 5;
ll p[N],b[N];
ll a[N];
ll n, k;
ll tree[N];
void add(int k, int num)
{for (int i = k;i <= n+1; i += i & -i)tree[i] += num;}
ll read(int k)
{ll sum = 0;for (int i = k;i > 0; i -= i & -i)sum += tree[i];return sum;
}
int main()
{//freopen("in.txt", "r", stdin);int x;while (cin >> n >> k){f(i, 1, n)scanf("%lld", &a[i]);f(i, 1, n)p[i] = p[i - 1] + a[i], b[i] = p[i];sort(p, p + 1 + n);ll ans = 0;f(i, 1, n){int idx2 = upper_bound(p, p + 1 + n, b[i-1]) - p;add(idx2, 1);int idx = upper_bound(p, p + 1 + n, b[i] - k) - p;ans += read(n+1) - read(idx);//查询前序比当前大的/}cout << ans << endl;}return 0;
}
D - Petya and Array(树状数组,二分)相关推荐
- 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 + . . . ...
- CF1042D Petya and Array 树状数组
题目描述 Petya has an array a a a consisting of n n n integers. He has learned partial sums recently, an ...
- D. Petya and Array(树状数组 + 前缀和 + 逆序对的思想)
Problem - D - Codeforces Petya 有一个由 n 个整数组成的数组 a.他最近学习了部分和,现在他可以非常快地计算出数组中任何一段元素的和.这个段是一个非空的序列,相邻的元素 ...
- Codeforce 1042 D. Petya and Array(树状数组、前缀和)
题目链接 省赛选拔学长说是CF的原题,赛后得知学长是用树状数组写的,补了一个树状数组的代码. 题意 NNN个数,问一共有多少个连续区间满足区间和小于 MMM 思路 记录每个数的前缀和sortsorts ...
- VK Cup 2012 Qualification Round 2 C. String Manipulation 1.0 线段树 or 树状数组+二分
http://codeforces.com/problemset/problem/159/C 题意: 给你一个字符串s,给出一个数k,k倍的s串组成新串str.然后给出n个操作,每个操作对应着pi,c ...
- P2161 [SHOI2009]会场预约[线段树/树状数组+二分/STL]
题目描述 PP大厦有一间空的礼堂,可以为企业或者单位提供会议场地.这些会议中的大多数都需要连续几天的时间(个别的可能只需要一天),不过场地只有一个,所以不同的会议的时间申请不能够冲突.也就是说,前一个 ...
- POJ2828 Buy Tickeys 树状数组+二分 线段树留坑。。。
题意:一堆人排队买票,告诉你一堆人的序号(序号的意思是插在"当前"第几个人的后面)和姓名(姓名用编号代替). 思路:线段树 或 树状数组+二分(自己还不会线段树,所以这里继续留坑) ...
- 树状数组 + 二分 - Query HDU - 4339
树状数组 + 二分 - Query HDU - 4339 题意: T组测试用例,每组给定两个长度分别为l1和l2的字符串s1,s2.有两种询问:①.1idic:将第id个字符串的第i个字符变成字符c. ...
- 最长上升子序列(LIS)/最长不上升子序列问题算法详解+例题(树状数组/二分优化,看不懂你来打我)
目录 最长上升子序列 一.朴素做法O(2n)O(2^n)O(2n) 二.优化做法O(nlogn)O(nlogn)O(nlogn) 三.例题引入:P1020 导弹拦截(求最长上升子序列和最长不上升子序列 ...
- POJ 2182 Lost Cows [树状数组+二分]
Description N (2 <= N <= 8,000) cows have unique brands in the range 1..N. In a spectacular di ...
最新文章
- Keras创始人:过去6个月,深度学习岗位已崩溃
- Linux串口读取与解析
- 比起睡觉,我更喜欢刷巨详细的Java枚举类,这是来自猿人的自觉呀
- bzoj 1024 生日快乐
- Android相对布局(RelativeLayout)
- html怎么设置z值,css z-index属性怎么用
- Struts1.x的架构一个简图
- PWN题[强网先锋]no_output
- 硬核Redis总结,看这篇就够了!
- 【教你如何放大招】程序猿是如何一点点的吃下一个产品的
- jquery ajax示例_jQuery AJAX JSP Servlet Java示例
- 讨论一道求质数的面试题
- vb.net 正則表達式 取 固定格式的字符
- 诺基亚PC套件界面设计
- 针对linux系统中/usr/src/kernels中找不到内核源码的问题
- 神经网络训练平台,在线神经网络训练
- 【 IntelliJ IDEA 】设置主题和字体
- 【小迪安全】Day04基础入门-30 余种加密编码进制Web数据库系统代码参数值
- LeetCode刷题笔记 二分查找 局部有序
- 【MATLAB教程案例3】QPSK解调过程的MATLAB开发