权值线段树。

要求 L<=(s[i]-s[j])<=R  (i<j)。 的i和j的数量。

所以把前缀和s加入一棵权值线段树,每次询问满足条件的范围中的权值的个数。

权值线段树不能像普通线段树一样预处理,否则因为权值范围过大会爆掉。

  1. #include<cstdio>
  2. #include<algorithm>
  3. #include<cstring>
  4. #define LL long long
  5. using namespace std;
  6. const LL inf = 10000000000ll;
  7. const int maxn = 100000 + 10;
  8. const int maxm = 8000000 + 10;
  9.  
  10. struct segtree {
  11. LL l[maxm],r[maxm];
  12. int lc[maxm],rc[maxm];
  13. int v[maxm],vid;
  14.  
  15. void change(int &x,LL L,LL R,LL p) {
  16. if(!x) {x=++vid;l[x]=L;r[x]=R;}
  17. v[x]++;
  18. if(L==R) return;
  19. LL mid=(L+R)>>1;
  20. if(p<=mid) change(lc[x],L,mid,p);
  21. else change(rc[x],mid+1,R,p);
  22. }
  23.  
  24. int ask(int x,LL L,LL R) {
  25. if(!x) return 0;
  26. if(r[x]<L || l[x]>R) return 0;
  27. if(L<=l[x]&&r[x]<=R) return v[x];
  28. return ask(lc[x],L,R)+ask(rc[x],L,R);
  29. }
  30.  
  31. }seg;
  32.  
  33. int root;
  34. LL res=0,n,L,R;
  35.  
  36. int main() {
  37. LL s=0;
  38. scanf("%lld%lld%lld",&n,&L,&R);
  39. for(int i=1,x;i<=n;i++) {
  40. scanf("%d",&x);
  41. seg.change(root,-inf,inf,s);
  42. s+=x;
  43. res+=seg.ask(root,max(-inf,s-R),min(inf,s-L));
  44. }
  45. printf("%lld\n",res);
  46. return 0;
  47. }

bzoj4627: [BeiJing2016]回转寿司的更多相关文章

  1. [BZOJ4627][BeiJing2016]回转寿司(线段树)

    从左到右处理,设到当前数R的前缀和为cnt[i],则以i为右端点的合法的区间左端点j必然是L<=cnt[i]-cnt[j-1]<=R,即cnt[i]-R<=cnt[j-1]<= ...

  2. 【BZOJ4627】[BeiJing2016]回转寿司 SBT

    [BZOJ4627][BeiJing2016]回转寿司 Description 酷爱日料的小Z经常光顾学校东门外的回转寿司店.在这里,一盘盘寿司通过传送带依次呈现在小Z眼前.不同的寿司带给小Z的味觉感 ...

  3. BZOJ_4627_[BeiJing2016]回转寿司_离散化+树状数组

    BZOJ_4627_[BeiJing2016]回转寿司_离散化+树状数组 Description 酷爱日料的小Z经常光顾学校东门外的回转寿司店.在这里,一盘盘寿司通过传送带依次呈现在小Z眼前.不同的寿 ...

  4. bzoj 4627: [BeiJing2016]回转寿司 -- 权值线段树

    4627: [BeiJing2016]回转寿司 Time Limit: 10 Sec  Memory Limit: 256 MB Description 酷爱日料的小Z经常光顾学校东门外的回转寿司店. ...

  5. bzoj 4627: [BeiJing2016]回转寿司

    4627: [BeiJing2016]回转寿司 Description 酷爱日料的小Z经常光顾学校东门外的回转寿司店.在这里,一盘盘寿司通过传送带依次呈现在小Z眼前.不同的寿 司带给小Z的味觉感受是不 ...

  6. 【bzoj4627】[BeiJing2016]回转寿司 离散化+树状数组

    题目描述 给出一个长度为n的序列,求所有元素的和在[L,R]范围内的连续子序列的个数. 输入 第一行包含三个整数N,L和R,分别表示寿司盘数,满意度的下限和上限. 第二行包含N个整数Ai,表示小Z对寿 ...

  7. [LOJ2736] [JOISC 2016 Day 3] 回转寿司 (分块+堆)

    [LOJ2736] [JOISC 2016 Day 3] 回转寿司 (分块+堆) 题面 给出一个有n 个点的环,环上各点有一个初始权值 \(a_i\) 给出 Q 个询问,每次询问给出一个区间 [l,r ...

  8. K - 回转寿司(值域段数(板题) + 动态开点)

    回转寿司 Description 酷爱日料的小Z经常光顾学校东门外的回转寿司店.在这里,一盘盘寿司通过传送带依次呈现在小Z眼前.不同的寿 司带给小Z的味觉感受是不一样的,我们定义小Z对每盘寿司都有一个 ...

  9. F - 回转寿司 (权值线段树)

    题目链接:https://cn.vjudge.net/contest/281960#problem/F 题目大意:中文题目 具体思路:权值线段树,我们每次寻找的是满足 (i<j)   L< ...

随机推荐

  1. HTTP persistent connection

    http://en.wikipedia.org/wiki/HTTP_persistent_connection

  2. 创建本地yum源及grouplist 出错

    RHEL有时候使用自定义的YUM源是很方便的事情. yum install createrepo createrepo /your/repo/directory/ 不过由于粗心,本人在使用时遇到很郁闷 ...

  3. 【面试题042】翻转单词顺序VS左旋转字符串

    [面试题042]翻转单词顺序VS左旋转字符串 题目一:     输入一个英文句子,反转句子中单词的顺序,但单词内字符的顺序不变.为简单起见,标点符号和普通字母一样处理.     例如输入字符串“I a ...

  4. CF444C DZY Loves Colors

    考试完之后打的第一场CF,异常惨烈呀,又只做出了一题了.A题呆滞的看了很久,领悟到了出题者的暗示,应该就是两个点的时候最大吧,不然的话这题肯定特别难敲,YY一发交上去然后就过了.然后就在不停地YY B ...

  5. git的安装使用和代码自动部署

    1.安装 http://www.cnblogs.com/sunada2005/archive/2013/06/06/3121098.html http://www.cnblogs.com/zhcncn ...

  6. 优化DB2缓冲页的大小

    零部件日结无法进行下去,建议配置C:\Program Files\SQLLIB目录下的db2cli.ini文件,加入此节:[DMSCNDB]CLIPkg=5 并重启DB2试试 另外,可以在命令行处理器 ...

  7. (4)用opengl读入off文件生成可执行文件把模型显示出来(未完待续)

    ·找了好几个程序,好像都达不到我的要求,去教程里看看吧! 在往上抛出了这问题,好几天才有人回答,我已经找到程序了 正好的他的分析对我分解程序很有用 这是一个难度比较高的 首先你要分析.off文件结构, ...

  8. IOS 视频分解图片、图片合成视频

    在IOS视频处理中,视频分解图片和图片合成视频是IOS视频处理中经常遇到的问题,这篇博客就这两个部分对IOS视频图像的相互转换做一下分析. (1)视频分解图片 这里视频分解图片使用的是AVAssetI ...

  9. React事件函数简介

    一.事件汇总 二.例子 <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset= ...

  10. mysql 常用命令(备忘)

    1:使用SHOW语句找出在服务器上当前存在什么数据库: mysql> SHOW DATABASES; 2:2.创建一个数据库MYSQLDATA mysql> CREATE DATABASE ...