离散化,树状数组,P5459 [BJOI2016] 回转寿司

P5459 [BJOI2016] 回转寿司 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

题目描述

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

不同的寿司带给小Z的味觉感受是不一样的,我们定义小Z对每盘寿司都有一个满意度。

例如小Z酷爱三文鱼,他对一盘三文鱼寿司的满意度为10;小Z觉得金枪鱼没有什么味道,他对一盘金枪鱼寿司的满意度只有 5;小Z最近看了电影《美人鱼》,被里面的八爪鱼恶心到了,所以他对一盘八爪鱼刺身的满意度是 −100。

特别地,小Z是个著名的吃货,他吃回转寿司有一个习惯,我们称之为“狂吃不止”。具体地讲,当他吃掉传送带上的一盘寿司后,他会毫不犹豫地吃掉它后面的寿司,直到他不想再吃寿司了为止。

今天,小Z再次来到了这家回转寿司店,N 盘寿司将依次经过他的面前。其中,小Z对第 i 盘寿司的满意度为ai​。

小Z可以选择从哪盘寿司开始吃,也可以选择吃到哪盘寿司为止。他想知道共有多少种不同的选择,使得他的满意度之和不低于 L,且不高于 R。

注意,虽然这是回转寿司,但是我们不认为这是一个环上的问题,而是一条线上的问题。即,小Z能吃到的是输入序列的一个连续子序列;最后一盘转走之后,第一盘并不会再出现一次。

输入格式

第一行三个正整数 N,L,R,表示寿司盘数,满意度的下限和上限。
第二行包含 N 个整数ai​,表示小Z对寿司的满意度。

输出格式

一行一个整数,表示有多少种方案可以使得小Z的满意度之和不低于L 且不高于 R。

输入输出样例

输入 #1复制

5 5 9
1 2 3 4 5

输出 #1复制

6

说明/提示

【数据范围】

1≤N≤105
∣ai​∣≤105
0≤L,R≤109

解析:离散化,树状数组

关于题目的意思既是让我们求有多少个连续的区间满足

L<=pre[r]-pre[l]<=R

其中pre是输入数组的前缀和

我们将上述不等式转化为:

pre[r]-R<=pre[l]<=pre[r]-L;

这样我们就可以将上式用树状数组实现:

在区间(pre[r]-R,pre[r]-L】内满足上式的pre[l]的个数;

但注意,有意可能出现负数和数字很大,我们需要将上面的数据进行离散化处理


#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cmath>
#include<ctime>
#include<algorithm>
#include<utility>
#include<stack>
#include<queue>
#include<vector>
#include<set>
#include<map>using namespace std;
typedef long long LL;
const int  N = 1e5 + 5;LL n, L, R, cnt;
LL sum[N], arr[3 * N];
LL C[3*N];int cmp(const LL& a, const LL& b) {return a < b;
}void add(int x, int d) {for (; x <= cnt; x += x & -x) {C[x] += d;}
}LL ask(int x) {LL ret = 0;for (; x; x -= x & -x) {ret += C[x];}return ret;
}int main() {cin >> n >> L >> R;for (int i = 1; i <= n; i++) {scanf("%lld", &sum[i]);sum[i] += sum[i - 1];}cnt = 1;for (int i = 1; i <= n; i++) {arr[cnt++] = sum[i];arr[cnt++] = sum[i] - R;arr[cnt++] = sum[i] - L;}sort(arr + 1, arr + 1 + cnt, cmp);cnt = unique(arr + 1, arr + 1 + cnt) - arr-1;add(lower_bound(arr + 1, arr + 1 + cnt, 0) - arr, 1);LL ans = 0;for (int i = 1; i <= n; i++) {int l = lower_bound(arr + 1, arr + 1 + cnt, sum[i] - R) - arr; //使用 lower_bound 查找第一个大于或等于 sum[i] 的元素位置int r = lower_bound(arr + 1, arr + 1 + cnt, sum[i] - L) - arr;//upper_bound 则是查找第一个大于 value 的元素位置ans += ask(r) - ask(l - 1);int x = lower_bound(arr + 1, arr + 1 + cnt, sum[i]) - arr;add(x, 1);}cout << ans << endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/72868.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue无感刷新

干前端工作也有一小段时间了。这不&#xff0c;研究了下vue项目里的无感刷新。可能有经验的大佬都知道也会敲。大佬就略过吧。 vue无感刷新&#xff0c;大致的原理就是后端返回两个token给前端。&#xff08;一个是请求的token&#xff0c;另一个是到期或者快到期后换取新token…

如何快速清理已经上传到Git仓库的.DS_Store文件

很久以前&#xff0c;发过这样一篇文章《Git全局忽略MacOS系统下的.DS_Store文件》&#xff0c;主要是针对MacOS用户&#xff0c;如何方便的在自己机器中免疫所有.DS_Store文件的误提交。如果有这个需求&#xff0c;且还没有搞过的读者可以通过上面这篇文章学习。 今天想要分享…

递归算法学习——N皇后问题,单词搜索

目录 ​编辑 一&#xff0c;N皇后问题 1.题意 2.解释 3.题目接口 4.解题思路及代码 二&#xff0c;单词搜索 1.题意 2.解释 3.题目接口 4.思路及代码 一&#xff0c;N皇后问题 1.题意 按照国际象棋的规则&#xff0c;皇后可以攻击与之处在同一行或同一列或同一斜线上…

CSP-J初赛复习大题整理笔记

本篇全是整理&#xff0c;为比赛准备. 在这里插入代码片 #include<cstdio> using namespace std; int n, m; int a[100], b[100];int main() {scanf_s("%d%d", &n, &m);for (int i 1; i < n; i)a[i] b[i] 0;//将两个数组清0&#xff0c;这…

【zookeeper】zookeeper介绍

分布式协调技术 在学习ZooKeeper之前需要先了解一种技术——分布式协调技术。那么什么是分布式协调技术&#xff1f;其实分布式协调技术主要用来解决分布式环境当中多个进程之间的同步控制&#xff0c;让他们有序的去访问某种临界资源&#xff0c;防止造成"脏数据"的…

5分钟生成10条短视频,AI重构电商营销

点击关注 文&#xff5c;姚 悦&#xff0c;编&#xff5c;王一粟 “我们将正式告别过去单一渠道投放的时代&#xff0c;走向一站式跨渠道品效联合经营的全新时代。”9月6日&#xff0c;在2023年其最重要的营销峰会上&#xff0c;淘天集团阿里妈妈市场部总经理穆尔说道。 当天…

SpringMVC常用的三种获取请求参数的方式

在Spring MVC中&#xff0c;可以使用多种方式来获取请求参数。下面我将介绍常用的几种方式&#xff0c;并提供相关的示例代码。 1. 使用RequestParam注解获取请求参数 RequestParam注解用于从请求中获取指定名称的参数值&#xff0c;并将其绑定到方法参数上。如果请求中没有找…

小程序实现摄像头拍照 + 水印绘制

文章标题 01 功能说明02 使用方式 & 效果图2.1 基础用法2.2 拍照 底部定点水印 预览2.3 拍照 整体背景水印 预览 03 全部代码3.1 页面布局 html3.2 业务核心 js3.3 基础样式 css 01 功能说明 需求&#xff1a;小程序端需要调用前置摄像头进行拍照&#xff0c;并且将拍…

OpenCV 06(图像的基本变换)

一、图像的基本变换 1.1 图像的放大与缩小 - resize(src, dsize, dst, fx, fy, interpolation) - src: 要缩放的图片 - dsize: 缩放之后的图片大小, 元组和列表表示均可. - dst: 可选参数, 缩放之后的输出图片 - fx, fy: x轴和y轴的缩放比, 即宽度和高度的缩放比. - …

ChatGPT在虚拟旅游和文化体验中的潜在作用如何?

ChatGPT在虚拟旅游和文化体验中具有潜在的重要作用。虚拟旅游是一种数字化的旅行方式&#xff0c;使人们可以在不离开家门的情况下探索世界各地的地点、文化和景观。ChatGPT可以通过提供信息、交互性和定制化的建议&#xff0c;增强虚拟旅游的体验&#xff0c;同时也可以用于文…

代码随想录31|452. 用最少数量的箭引爆气球,435. 无重叠区间,763.划分字母区间

452. 用最少数量的箭引爆气球 链接地址 class Solution { private:static bool cmp(const vector<int>& a, const vector<int>& b) {return a[0] < b[0];//从小到大排序} public:int findMinArrowShots(vector<vector<int>>& points) {…

stable diffusion实践操作-大模型介绍-SDXL1大模型

系列文章目录 大家移步下面链接中&#xff0c;里面详细介绍了stable diffusion的原理&#xff0c;操作等&#xff08;本文只是下面系列文章的一个写作模板&#xff09;。 stable diffusion实践操作 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生…

java面试题

一、java面试题第一天 1.java的特点 **Java是一门面向对象的编程。**面向对象就是我们将对应的操作都封装成对应的api,就是所谓的方法&#xff0c;提供给别人使用&#xff08;面向过程就是所有的方法&#xff0c;api由自己编写&#xff09; java具有平台独立性和移植性。 jav…

2023-9-8 求组合数(三)

题目链接&#xff1a;求组合数 III #include <iostream> #include <algorithm>using namespace std;typedef long long LL;int p;int qmi(int a, int k) {int res 1;while(k){if(k & 1) res (LL) res * a % p;k >> 1;a (LL) a * a % p;}return res; }…

FAT32文件系统f_mkfs函数详解

1.f_mkfs参数 参数path&#xff1a;要挂载/卸载的逻辑驱动器号;使用设备根路径表示。 参数opt&#xff1a;系统的格式&#xff0c;如图所示&#xff0c;选择FM_FAT32即可&#xff0c;选择其他的可能无法格式化。 参数au&#xff1a;每簇的字节数&#xff0c;以字节为单位&#…

后端面试话术集锦第 十一 篇:mybatis面试话术

这是后端面试集锦第十一篇博文——mybatis面试话术❗❗❗ 1. 介绍下mybatis,说说它的优缺点是什么? Mybatis是一个半ORM(对象关系映射)的持久层框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程…

安全模型中的4个P

引言&#xff1a;在安全模型中&#xff0c;经常会碰到PDR,PPDR&#xff0c;IPDRR&#xff0c;CARTA-PPDR等模型&#xff0c;其中的P&#xff0c;是predict&#xff1f;是prevent&#xff1f;还是protect&#xff1f;还是policy呢&#xff1f; 一、4P字典意思解释 1、predict&a…

使用内网负载机(Linux)执行Jmeter性能测试

一、背景 ​ 在我们工作中有时候会需要使用客户提供的内网负载机进行性能测试&#xff0c;一般在什么情况下我们需要要求客户提供内网负载机进行性能测试呢&#xff1f; 遇到公网环境下性能测试达到了带宽瓶颈。那么这时&#xff0c;我们就需要考虑在内网环境负载机下来执行我们…

中国ui设计师年终工作总结

一、萌芽阶段 记得初次应聘时&#xff0c;我对公司的认识仅仅局限于行业之一&#xff0c;对UI设计师一职的认识也局限于从事相对单纯的界面的设计创意和美术执行工作。除此之外&#xff0c;便一无所知了。所以&#xff0c;试用期中如何去认识、了解并熟悉自己所从事的行业&…

【Sword系列】Vulnhub靶机HACKADEMIC: RTB1 writeup

靶机介绍 官方下载地址&#xff1a;https://www.vulnhub.com/entry/hackademic-rtb1,17/ 需要读取靶机的root目录下key.txt 运行环境&#xff1a; 虚拟机网络设置的是NAT模式 靶机&#xff1a;IP地址&#xff1a;192.168.233.131 攻击机&#xff1a;kali linux&#xff0c;IP地…