思路:对于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(树状数组,二分)相关推荐

  1. 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 + . . . ...

  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. D. Petya and Array(树状数组 + 前缀和 + 逆序对的思想)

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

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

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

  5. 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 ...

  6. P2161 [SHOI2009]会场预约[线段树/树状数组+二分/STL]

    题目描述 PP大厦有一间空的礼堂,可以为企业或者单位提供会议场地.这些会议中的大多数都需要连续几天的时间(个别的可能只需要一天),不过场地只有一个,所以不同的会议的时间申请不能够冲突.也就是说,前一个 ...

  7. POJ2828 Buy Tickeys 树状数组+二分 线段树留坑。。。

    题意:一堆人排队买票,告诉你一堆人的序号(序号的意思是插在"当前"第几个人的后面)和姓名(姓名用编号代替). 思路:线段树 或 树状数组+二分(自己还不会线段树,所以这里继续留坑) ...

  8. 树状数组 + 二分 - Query HDU - 4339

    树状数组 + 二分 - Query HDU - 4339 题意: T组测试用例,每组给定两个长度分别为l1和l2的字符串s1,s2.有两种询问:①.1idic:将第id个字符串的第i个字符变成字符c. ...

  9. 最长上升子序列(LIS)/最长不上升子序列问题算法详解+例题(树状数组/二分优化,看不懂你来打我)

    目录 最长上升子序列 一.朴素做法O(2n)O(2^n)O(2n) 二.优化做法O(nlogn)O(nlogn)O(nlogn) 三.例题引入:P1020 导弹拦截(求最长上升子序列和最长不上升子序列 ...

  10. POJ 2182 Lost Cows [树状数组+二分]

    Description N (2 <= N <= 8,000) cows have unique brands in the range 1..N. In a spectacular di ...

最新文章

  1. Keras创始人:过去6个月,深度学习岗位已崩溃
  2. Linux串口读取与解析
  3. 比起睡觉,我更喜欢刷巨详细的Java枚举类,这是来自猿人的自觉呀
  4. bzoj 1024 生日快乐
  5. Android相对布局(RelativeLayout)
  6. html怎么设置z值,css z-index属性怎么用
  7. Struts1.x的架构一个简图
  8. PWN题[强网先锋]no_output
  9. 硬核Redis总结,看这篇就够了!
  10. 【教你如何放大招】程序猿是如何一点点的吃下一个产品的
  11. jquery ajax示例_jQuery AJAX JSP Servlet Java示例
  12. 讨论一道求质数的面试题
  13. vb.net 正則表達式 取 固定格式的字符
  14. 诺基亚PC套件界面设计
  15. 针对linux系统中/usr/src/kernels中找不到内核源码的问题
  16. 神经网络训练平台,在线神经网络训练
  17. 【 IntelliJ IDEA 】设置主题和字体
  18. 【小迪安全】Day04基础入门-30 余种加密编码进制Web数据库系统代码参数值
  19. LeetCode刷题笔记 二分查找 局部有序
  20. 【MATLAB教程案例3】QPSK解调过程的MATLAB开发

热门文章

  1. 中科大843信号与系统中国科学技术大学843信号与系统138,总分420+上岸经验帖
  2. USB fastboot
  3. 金融牌照之基金销售、基金支付、基金管理牌照简析
  4. 微信小程序实现表情包编辑
  5. angularjs1-3,工具方法,bootstrap,多个module,引入jquery
  6. JS显示和隐藏div
  7. 传奇开服方法教程:传奇开服在哪些网站打广告?传奇发布站打广告技巧
  8. 全球时间与北京时间、UTC时间关系表
  9. github网站扩展增强
  10. Java基础(二)集合