BZOJ4627 权值线段树 原创 fish04 2022-05-27 20:35:40 博主文章分类:数据结构 ©著作权 文章标签 #include #define i++ 文章分类 后端开发 ©著作权归作者所有:来自51CTO博客作者fish04的原创作品,请联系作者获取转载授权,否则将追究法律责任 4627: [BeiJing2016]回转寿司Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1204 Solved: 475[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^9Output仅一行,包含一个整数,表示共有多少种选择可以使得小Z的满意度之和 不低于L且不高于R。Sample Input5 5 91 2 3 4 5Sample Output用权值线段树进行维护;预处理出前缀和后,就是查询sum[i]-R~sum[i]-L这个区间sum[j]的数量;#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include//#include//#pragma GCC optimize(2)using namespace std;#define maxn 200005#define inf 10000000005ll//#define INF 1e18#define rdint(x) scanf("%d",&x)#define rdllt(x) scanf("%lld",&x)#define rdult(x) scanf("%lu",&x)#define rdlf(x) scanf("%lf",&x)#define rdstr(x) scanf("%s",x)#define mclr(x,a) memset((x),a,sizeof(x))typedef long long ll;typedef unsigned long long ull;typedef unsigned int U;#define ms(x) memset((x),0,sizeof(x))const long long int mod = 1e9 + 7;#define Mod 1000000000#define sq(x) (x)*(x)#define eps 1e-5typedef pair pii;#define pi acos(-1.0)//const int N = 1005;#define REP(i,n) for(int i=0;i<(n);i++)typedef pair pii;inline int rd() { int x = 0; char c = getchar(); bool f = false; while (!isdigit(c)) { if (c == '-') f = true; c = getchar(); } while (isdigit(c)) { x = (x << 1) + (x << 3) + (c ^ 48); c = getchar(); } return f ? -x : x;}ll gcd(ll a, ll b) { return b == 0 ? a : gcd(b, a%b);}int sqr(int x) { return x * x; }/*ll ans;ll exgcd(ll a, ll b, ll &x, ll &y) { if (!b) { x = 1; y = 0; return a; } ans = exgcd(b, a%b, x, y); ll t = x; x = y; y = t - a / b * y; return ans;}*/struct node { ll l, r, cnt;}tr[maxn<<4];ll sum[maxn];ll root = 1, cntrt = 1;ll L, R;void Insert(ll &o, ll l, ll r, ll v) { if (!o)o = ++cntrt; tr[o].cnt++; if (l == r)return; ll mid = (l + r) >> 1; if (v <= mid)Insert(tr[o].l, l, mid, v); else Insert(tr[o].r, mid + 1, r, v);}int query(ll l, ll r, ll LL, ll RR, ll rt) { if (LL <= l && r <= RR)return tr[rt].cnt; ll mid = (l + r) >> 1; int ans = 0; if (LL <= mid)ans += query(l, mid, LL, RR, tr[rt].l); if (mid < RR)ans += query(mid + 1, r, LL, RR, tr[rt].r); return ans;}int main(){ // ios::sync_with_stdio(0); ll n; rdllt(n); rdllt(L); rdllt(R); for (int i = 1; i <= n; i++) { ll x; rdllt(x); sum[i] = sum[i - 1] + x; } Insert(root, -inf, inf, 0); ll ans = 0; for (int i = 1; i <= n; i++) { ans += 1ll * query(-inf, inf, sum[i] - R, sum[i] - L, root); Insert(root, -inf, inf, sum[i]); } printf("%lld\n", 1ll * ans); return 0;} EPFL - Fighting 赞 收藏 评论 分享 举报 上一篇:51 Nod 1007 dp 下一篇:BZOJ3156 防御准备 斜率优化dp 提问和评论都可以,用心的回复会被更多人看到 评论 发布评论 全部评论 () 最热 最新 相关文章 前端歌谣-第柒拾贰课-登录鉴权-JWT鉴权 前言我是歌谣 今天继续给大家带来登录鉴权JWT模块的讲解安装npm i jsonwebtoken 安装依赖后台mongoDb前端目录usercontroll.jsconst UserService = require("../services/UserService")const JWT = require("../util/jwt")const UserController = { ios json 用户名 AVL树 1、搜索二叉树可能会出现一边树很长另一边树很短的极端情况,这样的话二叉树就会退化,这时我们就引出了AVL树这样的改良版。AVL树会控制两端树的高度差的绝对值小于1。(一般为右数高度减左树高度)2、AVL树会通过平衡因子来控制,因为是右-左,所以插入左边平衡因子--,右边则++3、基本结构:其中_parent是用来找上一节点进行链接控制AVL的行为:其中除了插入函数其余函数与搜索二叉树相似。4、插入 搜索二叉树 父节点 头结点 【数据结构】树与二叉树——树的基本概念 【数据结构】第五章——树与二叉树详细介绍树的基本概念、重要术语以及一些基本性质…… 数据结构 C语言 树 森林 BZOJ4627 权值线段树 BZOJ4627 权值线段树 。在这里,一盘盘寿... #include #define i++ bzoj 4627: [BeiJing2016]回转寿司 -- 权值线段树 4627: [BeiJing2016]回转寿司 Description 酷爱日料的小Z经常光顾学校东门外的回转寿司店。在这里,一盘盘寿司通过传送带依次呈现在小Z眼前。不同的寿 司带给小Z的味觉感受是不一样的,我们定义小Z对每盘寿司都有一个满意度,例如小Z酷爱三文鱼,他对一盘三文 鱼寿司的满意度为10 线段树 #include #define ios 前缀和 权值线段树[模板] #include <bits/stdc++.h>using namespace std;#define int long longconst int maxn=2e5+10;int op[maxn],d[ #include 权值 c++ 权值线段树模板 const int N = 3e5 + 10;ll value[N];struct Tree { ll sum[N << 1], cnt[N << 1]; void update(int rt, int l, int r, int pos, int x) { if(l == r) 最小值 线段树进阶之权值树 抱怨:真不应该直接去刚(主席树:可持久化线段树),从中午12点学晚上到快7点,才理解,这不是我能刚的动的,为什么?因为学主席树之前要先学权值线段树,如果不了解权值线段树,直接刚主席树,根本不知道在说个啥玩意,效率很低现在我讲一下权值线段树:给一串数 1,2,3,1,5,4 很明显这串数的值域是[1,5],我们把值域二分为区间,求每一个区间有多少数,然后可以以通过这种方案来求:第k大或者... 权值线段树 离散化 #include 主席树or权值线段树模板 #include <cstdio>#include <vector>#include <queue>#inclulude <io... #define #include 线段树 hdu 5249(权值线段树) 一道权值线段树的题:也不算是板子题,变相求第k大题目链 #include i++ 离散化 【学习笔记】权值线段树 原文链接 挖坑待填 一. 权值线段树 权值线段树即一种线段树,以序列的数值为下标。节点里所统计的值为节点所对应的区间 \([l,r]\) 中,\([l,r]\) 这个值域中所有数的出现次数。 举个例子,有一个长度为 \(10\) 的序列 {\(1,5,2,3,4,1,3,4,4,4\)}。 那么统计 权值线段树 子节点 结点 数据结构 线段树--权值线段树 详解 一、权值线段树 简介1.线段树线段树是一种用于维护区间信息的高效数据结构,可以在 O(logN)O(\log N)O(logN) 的时间复杂 算法 数据结构 acm竞赛 权值线段树 线段树 楼兰图腾(权值线段树) 在完成了分配任务之后,西部314来到了楼兰古城的西部。 相传很久以前这片土地上(比楼兰古城还早)生活着两个部落,一个部落崇拜尖刀(‘V’),一个部落崇拜铁锹(‘∧’),他们分别用V和∧的形状来代表各自部落的图腾。 西部314在楼兰古城的下面发现了一幅巨大的壁画,壁画上被标记出了N个点,经测量发现这N #include 数据 ios 离散化 输出格式 BZOJ 3531: [Sdoi2014]旅行 权值线段树 + 树链剖分 Description S国有N个城市,编号从1到N。城市间用N-1条双向道路连接,满足 从一个城市出发可以到达其它所有城市。每个城市信仰不同的宗教,如飞天面条神教、隐形独角兽教、绝地教都是常见的信仰。为了方便,我们用不同的正整数代表各种宗教, S国的居民常常旅行。旅行时他们总会走最短路,并且为了避 树 bzoj4627: [BeiJing2016]回转寿司 好题! 这题教会我:写cdq可以不拘一格,只要保证本质是释放左半部分影响于右半部分就可以了。 #include i++ ios 编程 [BZOJ4627][BeiJing2016]回转寿司 [BZOJ4627][BeiJing2016]回转寿司 试题描述 酷爱日料的小Z经常光顾学校东门外的回转寿司店。在这里,一盘盘寿司通过传送带依次呈现在小Z眼前。不同的寿司带给小Z的味觉感受是不一样的,我们定义小Z对每盘寿司都有一个满意度,例如小Z酷爱三文鱼,他对一盘三文鱼寿司的满意度为10;小Z觉得 #include #define git 线段树 数据 Bzoj4627 [BeiJing2016]回转寿司 树 线段树 #include 线段树 i++ #define ios 权值线段树 :https://blog..net/qq_39565901/article/details/81782611 学习权值线段树,首先要了解线段树是什么。如果不会的可以先学习一下。 是什么 权值线段树,顾名思义是一棵线段树。但它和普通线段树不同:线段树,每个节点用来维护一段区间的最大值或总 权值线段树 子树 递归 线段树 子节点 详解权值线段树 详解权值线段树 本篇随笔详细讲解一下算法竞赛中的一种数据结构——权值线段树。 前置知识 在讲解权值线段树之前,我们首先要明确:权值线段树属于一种线段树,它的本质仍然是线段树。所以在学习权值线段树之前,如果还对普通线段树并没有一个深刻的了解的话,请先移步这篇博客来学习简单线段树。 简单线段树知识点详解 权值线段树 线段树 子节点 #define 递归 BZOJ 3110 ZJOI 2013 K大数查询 树套树(权值线段树套区间线段树) 题目大意:有一些位置。这些位置上能够放若干个数字。如今有两种操作。 1.在区间l到r上加入一个数字x 2.求出l到r上的第k大的数字是什么 思路:这样的题一看就是树套树,关键是怎么套,怎么写。(话说我也不会来着。。)最easy想到的方法就是区间线段树套一个权值线段树。可是区间线段树上的标记就会变得异 线段树 #include #define 权值线段树 ios 鲁大师更新bios版本 一、写在最前面有几句有用的建议,在这里先写,能让你的电脑长久运行良好:国内的软件普遍都带有广告,这不是Windows的锅 国内的软件普遍都带有广告,这不是Windows的锅 不要使用360系列的产品 ,有人和我说企业版特别良心,但是我没用过,欢迎尝试后给我反馈 所有软件都从官方网站下载,不要图方便使用软件升级助手,或者电脑管家 安装程序请仔细观察是否有捆绑软件,一定取消勾选的捆绑软件 注意观察安装 鲁大师更新bios版本 windows 安装程序 Windows 硬盘分区 windows 10 服务启用nfs 自2016年推出之后,windows系统也内置一个 Ubuntu Linux 子系统环境了。现在这样三大主流操作系统都可以使用几乎统一的命令行操作了。现在 Windows 10 系统完美兼容 Linux 应用程序,这并不是通过虚拟机,也不是通过类似cygwin或者wine的方式实现。而是作为windows的一个子程序。这意味着以后在windows系统上可以直接原生运行 Linux Bash 命令行 windows 10 服务启用nfs 程序win10 Ubuntu windows系统 搜索 mysql 交叉查询 group by 简介在 MySQL 数据库中,CROSS JOIN 是一种用于生成两个或多个表的笛卡尔积的连接方法。CROSS JOIN 不需要任何连接条件,它将左表的每一行与右表的每一行进行组合,从而生成一个包含所有可能组合的结果集。本文将详细介绍 MySQL 中的 CROSS JOIN 概念,并提供示例来加深理解。什么是 CROSS JOINCROSS JOIN 是一种连接方法,它生成连接表中所有可能的组合。 mysql 交叉查询 group by mysql 数据库 自动化测试 软件测试 短语音识别 移动端部署 端点检测(End-point Detection,简称 EPD)的目标,是要找到音频信号(音讯)的开始和结束的位置,所以又可以称为 Speech Detection 或是 VAD (Voice Activity Detection)。端点检测在语音处理与识别中,扮演重要的角色,可以基于时域,或者基于频域来做 EPD。本文尝试解答如下问题:1).为什么使用基于频域的方法来做音频的分析?2).什么是语 短语音识别 移动端部署 语音识别 人工智能 音视频 频域 MCU 电源管理模块 驱动 架构框图 /**************************************************************************//** * @file main.c * @version V3.00 * $Revision: 3 $ * $Date: 15/09/02 10:03a $ * @brief Demonstrate how to set MCU 电源管理模块 驱动 架构框图 #define SYS 三极管