Bzoj4627 [BeiJing2016]回转寿司

Time Limit: 10 Sec  Memory Limit: 256 MB
Submit: 329  Solved: 149
[Submit][Status][Discuss]

Description

酷爱日料的小Z经常光顾学校东门外的回转寿司店。在这里,一盘盘寿司通过传送带依次呈现在小Z眼前。不同的寿

司带给小Z的味觉感受是不一样的,我们定义小Z对每盘寿司都有一个满意度,例如小Z酷爱三文鱼,他对一盘三文

鱼寿司的满意度为10;小Z觉得金枪鱼没有什么味道,他对一盘金枪鱼寿司的满意度只有5;小Z最近看了电影“美

人鱼”,被里面的八爪鱼恶心到了,所以他对一盘八爪鱼刺身的满意度是-100。特别地,小Z是个著名的吃货,他

吃回转寿司有一个习惯,我们称之为“狂吃不止”。具体地讲,当他吃掉传送带上的一盘寿司后,他会毫不犹豫地

吃掉它后面的寿司,直到他不想再吃寿司了为止。今天,小Z再次来到了这家回转寿司店,N盘寿司将依次经过他的

面前,其中,小Z对第i盘寿司的满意度为Ai。小Z可以选择从哪盘寿司开始吃,也可以选择吃到哪盘寿司为止,他

想知道共有多少种不同的选择,使得他的满意度之和不低于L,且不高于R。注意,虽然这是回转寿司,但是我们不

认为这是一个环上的问题,而是一条线上的问题。即,小Z能吃到的是输入序列的一个连续子序列;最后一盘转走

之后,第一盘并不会再出现一次。

Input

第一行包含三个整数N,L和R,分别表示寿司盘数,满意度的下限和上限。

第二行包含N个整数Ai,表示小Z对寿司的满意度。

N≤100000,|Ai|≤100000,0≤L, R≤10^9

Output

仅一行,包含一个整数,表示共有多少种选择可以使得小Z的满意度之和

不低于L且不高于R。

Sample Input

5 5 9
1 2 3 4 5

Sample Output

6

HINT

Source

线段树

求满足L<=sum[i]-sum[j-1]<=R   (j<=i)的i,j有多少对

变形得到sum[i]-R<=sum[j-1]<=sum[i]-L

那么把sum[i]挨个扔进线段树里,每次查询有多少个sum[j-1]满足条件即可

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 #include<cstring>
 5 #define LL long long
 6 using namespace std;
 7 const LL INF=1e13;
 8 const int mxn=100010;
 9 int read(){
10     int x=0,f=1;char ch=getchar();
11     while(ch<‘0‘ || ch>‘9‘){if(ch==‘-‘)f=-1;ch=getchar();}
12     while(ch>=‘0‘ && ch<=‘9‘){x=x*10-‘0‘+ch;ch=getchar();}
13     return x*f;
14 }
15 struct node{
16     int l,r;
17     int v;
18 }t[mxn*50];int cnt=0;
19 int n,L,R,rot=0;
20 LL sum[mxn],ans=0;
21 void update(LL p,LL l,LL r,int &rt){
22     if(!rt){rt=++cnt;}
23     if(l==r){++t[rt].v;return;}
24     LL mid=(l+r)>>1;
25     if(p<=mid)update(p,l,mid,t[rt].l);
26     else update(p,mid+1,r,t[rt].r);
27     t[rt].v=t[t[rt].l].v+t[t[rt].r].v;
28     return;
29 }
30 LL query(LL x,LL y,LL l,LL r,int rt){
31     if(x<=l && r<=y){return t[rt].v;}
32     LL mid=(l+r)>>1;
33     LL res=0;
34     if(x<=mid && t[rt].l)res+=query(x,y,l,mid,t[rt].l);
35     if(y>mid && t[rt].r)res+=query(x,y,mid+1,r,t[rt].r);
36     return res;
37 }
38 int main(){
39     int i,j,w;
40     n=read();L=read();R=read();
41 //    LL lm=INF,rm=-INF;然而没考虑到sum[0],会WA
42     LL lm=0,rm=0;
43     for(i=1;i<=n;i++){
44         w=read();
45         sum[i]=sum[i-1]+w;
46         lm=min(lm,sum[i]);rm=max(rm,sum[i]);
47     }
48     update(0,lm,rm,rot);//sum[0]==0
49     for(i=1;i<=n;i++){
50         ans+=query(sum[i]-R,sum[i]-L,lm,rm,rot);
51         update(sum[i],lm,rm,rot);
52     }
53     printf("%lld\n",ans);
54     return 0;
55 }
时间: 2024-11-16 15:07:58

Bzoj4627 [BeiJing2016]回转寿司的相关文章

bzoj 4627: [BeiJing2016]回转寿司

4627: [BeiJing2016]回转寿司 Description 酷爱日料的小Z经常光顾学校东门外的回转寿司店.在这里,一盘盘寿司通过传送带依次呈现在小Z眼前.不同的寿 司带给小Z的味觉感受是不一样的,我们定义小Z对每盘寿司都有一个满意度,例如小Z酷爱三文鱼,他对一盘三文 鱼寿司的满意度为10:小Z觉得金枪鱼没有什么味道,他对一盘金枪鱼寿司的满意度只有5:小Z最近看了电影“美 人鱼”,被里面的八爪鱼恶心到了,所以他对一盘八爪鱼刺身的满意度是-100.特别地,小Z是个著名的吃货,他 吃回转寿

BZOJ 4627 回转寿司

学用vim写的第一道题. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define maxn 100500 using namespace std; long long n,l,r,a[maxn],b[maxn],hash[maxn],tot=0,ans=0; long long ls[maxn*40],rs[maxn*40],sum[maxn*40],

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

题目链接:https://cn.vjudge.net/contest/281960#problem/F 题目大意:中文题目 具体思路:权值线段树,我们每次寻找的是满足 (i<j)   L<=s[i]-s[j]<=R.转换一下,就是 s[j]-R<=s[i]<=s[j]-L.这样的话,我们每一次寻找满足情况的合数就可以了. ps:第一次做权值线段树,感觉这东西和线段树差不多,只不过每一个区间表示成了具体的值有多少个. AC代码: 1 #include<bits/stdc+

P5459 [BJOI2016]回转寿司

传送门 暴力怎么搞,维护前缀和 $s[i]$ ,对于每一个 $s[i]$,枚举所有 $j\in[0,i-1]$,看看 $s[i]-s[j]$ 是否属于 $[L,R]$ 如果属于就加入答案 $s[i]-s[j]\in[L,R]$ 等价于 $s[i]-s[j] \geqslant L , s[i]-s[j] \leqslant R$ 即 $s[i]-L \geqslant s[j] , s[i]-R \leqslant s[j]$ 发现对于每一个 $i$ 其实就是问区间 $[0,i-1]$ 中权值在

初涉值域线段树

其实就是线段树啦 什么是值域线段树 我们(初学者)都知道线段树是拿来维护数列区间的信息的.但是如果我们想要查询的重点在于数值而不是区间信息呢?这时候就要对于值域区间维护线段树了. 例题 bzoj4627: [BeiJing2016]回转寿司 题目大意 给定$n$个数和$L,R$,问其中区间和满足$L<=sum[r]-sum[l-1]<=R$的区间有多少 N≤100000,|Ai|≤100000,0≤L, R≤10^9 题目分析 值域线段树中每个节点代表一个值的区间,其实和基础的线段树差不多.

beijing2016

4625: [BeiJing2016]水晶 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 201  Solved: 70[Submit][Status][Discuss] Description 不用惊慌,今天的题都不是小强出的.--融入了无数心血的作品,现在却不得不亲手毁掉,难以体会他的心情啊 .--那也是没有办法的事情,能量共振不消除的话--望着已经被装上炸的水晶,02放下了望远镜,看向了手 中的共振分析报告.还是会有一些水晶,幸存下来的--

bzoj 4627 值域线段树

4627: [BeiJing2016]回转寿司 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 523  Solved: 227[Submit][Status][Discuss] Description 酷爱日料的小Z经常光顾学校东门外的回转寿司店.在这里,一盘盘寿司通过传送带依次呈现在小Z眼前.不同的寿 司带给小Z的味觉感受是不一样的,我们定义小Z对每盘寿司都有一个满意度,例如小Z酷爱三文鱼,他对一盘三文 鱼寿司的满意度为10:小Z觉得金枪鱼没有

皇家利华注册156+8793+1777学着做个情调女人

学着做个情调女人情调女人与年龄无关,是一种平和而热烈的心境,是一种面对现实的修养,是一种生活方式,是一种成熟的幸福女人的生存方式和为人处世的态度,情调女人的生成,是先天的,也是后天的,情调女人是物质的,更多是精神的. 学着做个情调女人 情调女人象一本书,也许没有过分美丽精致的封页,也没有用来制造卖点的扉页和序言,但读后可以收获,即使不收获也会感悟,即使不感悟也会快乐,即使不快乐也会轻松.- 情调女人和时尚女人不一样,但感觉是相通的.时尚女人也许不是情调女人,但情调女人至少有一点时尚.她懂得自己的

[NOI2015]寿司晚宴

题目描述 为了庆祝NOI的成功开幕,主办方为大家准备了一场寿司晚宴.小G和小W作为参加NOI的选手,也被邀请参加了寿司晚宴. 在晚宴上,主办方为大家提供了n?1种不同的寿司,编号1,2,3,?,n-1,其中第种寿司的美味度为i+1(即寿司的美味度为从2到n). 现在小G和小W希望每人选一些寿司种类来品尝,他们规定一种品尝方案为不和谐的当且仅当:小G品尝的寿司种类中存在一种美味度为x的寿司,小W品尝的寿司中存在一种美味度为y的寿司,而x与y不互质. 现在小G和小W希望统计一共有多少种和谐的品尝寿司