当前位置: 首页 > news >正文

【题解】JZOJ3854 分组

JZOJ 3854

题意

n n n 个人,每个人有地位 r i r_i ri 和年龄 a i a_i ai,对于一个若干人组成的小组,定义其队长为地位最高的成员(若相等则取二者均可),其他成员的年龄与队长的差不能超过 k k k q q q 次询问,若将 x , y x,y x,y 安排在同一个小组,那么这个小组最多多少人。

题解

先预处理每个人当队长时小组最多有多少人。设这个值为 c n t i cnt_i cnti

具体来说,按 r r r 排序,对于 i i i 需要求前面 i i i 个人有多少个人的年龄在 [ a i − k , a i + k ] [a_i-k,a_i+k] [aik,ai+k] 的区间内。用一个动态开点权值线段树即可。下标是年龄。

考虑对询问离线。不妨假设 r x ≤ r y r_x\le r_y rxry,那么对于一个询问 i i i,能够包含 x i , y i x_i,y_i xi,yi 的队长的范围是 r ≥ r y i , max ⁡ ( a x i , a y i ) − k ≤ a ≤ min ⁡ ( a x i , a y i ) + k r\ge r_{y_i},\max (a_{x_i},a_{y_i}) - k\le a\le \min(a_{x_i},a_{y_i})+k rryi,max(axi,ayi)kamin(axi,ayi)+k。因为与 x , y x,y x,y 的年龄差要同时小于 k k k,所以选范围小的区间。

r y r_y ry 为关键值将询问从大到小排序。然后一个动态开点权值线段树,下标是年龄,叶子节点存储 c n t i cnt_i cnti。这样对于一个询问,只需要查找在 [ max ⁡ ( a x i , a y i ) − k , min ⁡ ( a x i , a y i ) + k ] [\max (a_{x_i},a_{y_i}) - k,\min(a_{x_i},a_{y_i})+k] [max(axi,ayi)k,min(axi,ayi)+k] 区间内的最大值即可。

时间复杂度 O ( n log ⁡ w ) O(n\log w) O(nlogw)

实现

记得判 -1。注意输入的标号是排序前的标号,要处理一下。

#include <bits/stdc++.h>
using namespace std;
const int N = 100005, W = 1e9;
int n, K, Q, ans[N], vp[N], cnt[N];
int tr[N << 4], mx[N << 4], rt1 = 0, rt2 = 0, tot1 = 0, tot2 = 0, ls1[N << 4], rs1[N << 4], ls2[N << 4], rs2[N << 4];
struct mem {int r, ag, id;bool operator< (const mem &T) const { return r < T.r; }
} a[N];
struct Query {int x, y, id;bool operator< (const Query &T) const { return a[y].r > a[T.y].r; }
} q[N];
void upd1(int &rt, int x, int y, int pos, int val) {if (!rt) rt = ++tot1;if (x == y) { tr[rt] += val; return; }int mid = x + y >> 1;if (pos <= mid) upd1(ls1[rt], x, mid, pos, val);else upd1(rs1[rt], mid + 1, y, pos, val);tr[rt] = tr[ls1[rt]] + tr[rs1[rt]];
}
int qry1(int rt, int x, int y, int l, int r) {if (l > y || r < x || !rt) return 0;if (l <= x && y <= r) return tr[rt];int mid = x + y >> 1;return qry1(ls1[rt], x, mid, l, r) + qry1(rs1[rt], mid + 1, y, l, r);
}
void upd2(int &rt, int x, int y, int pos, int val) {if (!rt) rt = ++tot2;if (x == y) { mx[rt] = max(mx[rt], val); return; }int mid = x + y >> 1;if (pos <= mid) upd2(ls2[rt], x, mid, pos, val);else upd2(rs2[rt], mid + 1, y, pos, val);mx[rt] = max(mx[ls2[rt]], mx[rs2[rt]]);
}
int qry2(int rt, int x, int y, int l, int r) {if (l > y || r < x || !rt) return 0;if (l <= x && y <= r) return mx[rt];int mid = x + y >> 1;return max(qry2(ls2[rt], x, mid, l, r), qry2(rs2[rt], mid + 1, y, l, r));
}
int main() {scanf("%d%d", &n, &K);for (int i = 1; i <= n; i++) scanf("%d", &a[i].r), a[i].id = i;for (int i = 1; i <= n; i++) scanf("%d", &a[i].ag);sort(a + 1, a + n + 1);for (int i = 1; i <= n; i++) vp[a[i].id] = i;for (int i = 1; i <= n; ) {int j = i;while (a[j].r == a[j + 1].r) upd1(rt1, 1, W, a[j].ag, 1), j++;upd1(rt1, 1, W, a[j].ag, 1);for (; i <= j; i++) cnt[i] = qry1(rt1, 1, W, a[i].ag - K, a[i].ag + K);}scanf("%d", &Q);for (int i = 1; i <= Q; i++) {scanf("%d%d", &q[i].x, &q[i].y), q[i].x = vp[q[i].x], q[i].y = vp[q[i].y], q[i].id = i;if (q[i].x > q[i].y) swap(q[i].x, q[i].y);}sort(q + 1, q + Q + 1);int k = n;for (int i = 1; i <= Q; i++) {while (q[i].y <= k) upd2(rt2, 1, W, a[k].ag, cnt[k]), k--;ans[q[i].id] = qry2(rt2, 1, W, max(a[q[i].x].ag, a[q[i].y].ag) - K, min(a[q[i].x].ag, a[q[i].y].ag) + K);if (ans[q[i].id] < 2) ans[q[i].id] = -1;}for (int i = 1; i <= Q; i++) printf("%d\n", ans[i]);return 0;
}

相关文章:

【题解】JZOJ3854 分组

JZOJ 3854 题意 有 n n n 个人&#xff0c;每个人有地位 r i r_i ri​ 和年龄 a i a_i ai​&#xff0c;对于一个若干人组成的小组&#xff0c;定义其队长为地位最高的成员&#xff08;若相等则取二者均可&#xff09;&#xff0c;其他成员的年龄与队长的差不能超过 k k …...

区块链实验室(26) - 区块链期刊Blockchain: Research and Applications

Elsevier出版物“Blockchain: Research and Applications”是浙江大学编审的期刊。该期刊自2020年创刊&#xff0c;并出版第1卷。每年出版4期&#xff0c;最新期是第4卷第3期(2023年9月)。 目前没有官方的IF&#xff0c;Elsevier的引用因子Citescore是6.4。 虽然是新刊&#xf…...

【学习笔记】[ARC153F] Tri-Colored Paths

假设三种颜色的边都存在&#xff0c;并且不存在这样的路径 首先观察到&#xff0c;对于一个简单环上的边&#xff0c;颜色一定相同 因此&#xff0c;考虑建立圆方树&#xff0c;问题转化为圆方树上的 D P DP DP问题。限制是对于方点所连接的边&#xff0c;必须涂上相同的颜色…...

基于SSM的实习管理系统

基于SSM的实习管理系统、前后端分离 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringSpringMVCMyBatisVue工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 管理员界面 教师 学生 研究背景 基于SSM的实习管理系统是一个基于Spring、Spring…...

在Vue中通过ElementUI构建前端页面【登录,注册】,在IEDA构建后端实现前后端分离

一.ElementUI组件入门 1.对于ElementUI的理解 是一套基于 Vue.js 的开源UI组件库&#xff0c;提供了丰富的可复用组件&#xff0c;可以帮助开发者快速构建美观、易用的前端界面 2.Element UI 的特点和优势 多样化的组件&#xff1a;Element UI 提供了众多常用的基础组件&#…...

TX2 open ttyTHS2

TX2 open ttyTHS2 #冷风那个吹# 于 2019-04-01 14:10:43 发布 1749 收藏 6 分类专栏: 平时问题积累 TX2 版权 平时问题积累 同时被 2 个专栏收录 22 篇文章0 订阅 订阅专栏 TX2 30 篇文章8 订阅 订阅专栏 TX2上有5个串口,但是ttyTHS1是调试串口,ttyTHS3是蓝牙,ttyTHS…...

conan入门(二十八):解决conan 1.60.0下 arch64-linux-gnu交叉编译openssl/3.1.2报错问题

上一篇博客《conan入门(二十七):因profile [env]字段废弃导致的boost/1.81.0 在aarch64-linux-gnu下交叉编译失败》解决了conan 1.60.0交叉编译boost/1.80.1的问题后&#xff0c;我继续交叉编译openssl/3.1.2时又报错了 conan install openssl/3.1.2 -pr:h aarch64-linux-gnu.…...

Xcode 15 运行<iOS 14, 启动崩溃问题

如题. Xcode 15 启动 < iOS 14(没具体验证过, 我的问题设备是iOS 13.7)真机设备 出现启动崩溃 解决方案: Build Settings -> Other Linker Flags -> Add -> -ld64...

HTTPS协议概述

HTTPS&#xff08;Hypertext Transfer Protocol over Secure Socket Layer&#xff0c;基于安全套接字层的超文本传输协议&#xff09;&#xff0c;是以安全为目标的HTTP通道&#xff0c;简单讲是HTTP的安全版。即HTTP下加入SSL层&#xff0c;HTTPS的安全基础是SSL&#xff0c;…...

jmeterbeanshell调用jsonpath获取对应值

1.jmeter 新建线程组、Java Request、BeanShell Assertion、View Results Tree 2、在BeanShell Assertion中贴入代码&#xff1a; import org.apache.jmeter.extractor.json.jsonpath.JSONManager; import java.util.List; JSONManager js new JSONManager(); String jsonStr…...

C++中实现雪花算法来在秒级以及毫秒及时间内生成唯一id

1、雪花算法原理 雪花算法&#xff08;Snowflake Algorithm&#xff09;是一种用于生成唯一ID的算法&#xff0c;通常用于分布式系统中&#xff0c;以确保生成的ID在整个分布式系统中具有唯一性。它的名称来源于雪花的形状&#xff0c;因为生成的ID通常是64位的整数&#xff0…...

OPTEE Gprof(GNU profile)

安全之安全(security)博客目录导读 OPTEE调试技术汇总 目录 一、序言 二、Gprof使用 三、Gprof实现 1、Call graph information 2、PC distribution over time 一、序言 本文描述了如何使用gprof对TA进行概要分析。 配置选项CFG_TA_GPROF_SUPPORTy使OP-TEE能够从在用户模…...

MySQL 事务的操作指南(事务篇 二)

基本操作 事务的提交方式&#xff1a;自动提交&#xff08;autocommit1&#xff09;和手动提交&#xff08;autocommit0&#xff09; 查询和修改事务提交方式&#xff1a; -- 查看事务提交方式(标识表示这是个系统变量) select autocommit ;-- 修改事务提交方式为自动提交 …...

Oracle 查询 SQL 语句

目录 1. Oracle 查询 SQL 语句1.1. 性能查询常用 SQL1.1.1. 查询最慢的 SQL1.1.2. 列出使用频率最高的 5 个查询1.1.3. 消耗磁盘读取最多的 sql top51.1.4. 找出需要大量缓冲读取(逻辑读)操作的查询1.1.5. 查询每天执行慢的 SQL1.1.6. 从 V$SQLAREA 中查询最占用资源的查询1.1.…...

gin 基本使用

gin 初体验 import ("net/http""github.com/gin-gonic/gin" )func main() {r : gin.Default()r.GET("/ping", func(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"message": "pong",})})r.Run() }gin 路由接受一个 type …...

8月最新修正版风车IM即时聊天通讯源码+搭建教程

8月最新修正版风车IM即时聊天通讯源码搭建教程。风车 IM没啥好说的很多人在找,IM的天花板了,知道的在找的都知道它的价值,开版好像就要29999,后端加密已解,可自己再加密,可反编译出后端项目源码,已增加启动后端需要google auth双重验证,pc端 web端 wap端 android端 ios端 都有 …...

NSDT孪生场景编辑器系统介绍

一、产品背景 数字孪生的建设流程涉及建模、美术、程序、仿真等多种人才的协同作业&#xff0c;人力要求高&#xff0c;实施成本高&#xff0c;建设周期长。如何让小型团队甚至一个人就可以完成数字孪生的开发&#xff0c;是数字孪生工具链要解决的重要问题。考虑到数字孪生复杂…...

3D WEB轻量化引擎HOOPS助力3D测量应用蓬勃发展:效率、精度显著提升

在3D开发工具领域&#xff0c;Tech Soft 3D打造的HOOPS SDK已经崭露头角&#xff0c;成为了全球领先的3D领域开发工具提供商。HOOPS SDK包括四种不同的3D软件开发工具&#xff0c;已成为行业的翘楚。 其中&#xff0c;HOOPS Exchange以其CAD数据转换的能力脱颖而出&#xff0c…...

【Orange Pi】Orange Pi5 Plus 安装记录

官网&#xff1a;Orange Pi - Orangepi 主控芯片&#xff1a;Rockchip RK3588(8nm LP制程&#xff09;NPU&#xff1a;内嵌的 NPU 支持INT4/INT8/INT16/FP16混合运算&#xff0c;算力高达 6Top支持的操作系统&#xff1a; Orangepi OS&#xff08;Droid&#xff09;Orangepi O…...

NLP 项目:维基百科文章爬虫和分类 - 语料库阅读器

塞巴斯蒂安 一、说明 自然语言处理是机器学习和人工智能的一个迷人领域。这篇博客文章启动了一个具体的 NLP 项目&#xff0c;涉及使用维基百科文章进行聚类、分类和知识提取。灵感和一般方法源自《Applied Text Analysis with Python》一书。 在接下来的文章中&#xff0c;我将…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄

文&#xff5c;魏琳华 编&#xff5c;王一粟 一场大会&#xff0c;聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中&#xff0c;汇集了学界、创业公司和大厂等三方的热门选手&#xff0c;关于多模态的集中讨论达到了前所未有的热度。其中&#xff0c;…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者&#xff1a;来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗&#xff1f;了解下一期 Elasticsearch Engineer 培训的时间吧&#xff01; Elasticsearch 拥有众多新功能&#xff0c;助你为自己…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文&#xff5c;DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色&#xff0c;华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型&#xff0c;能助力我们轻松驾驭 DeepSeek-V3/R1&#xff0c;本文中将分享如何…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言&#xff1a; 最近在做行为检测相关的模型&#xff0c;用的是时空图卷积网络&#xff08;STGCN&#xff09;&#xff0c;但原有kinetic-400数据集数据质量较低&#xff0c;需要进行细粒度的标注&#xff0c;同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...

为什么要创建 Vue 实例

核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...

Docker拉取MySQL后数据库连接失败的解决方案

在使用Docker部署MySQL时&#xff0c;拉取并启动容器后&#xff0c;有时可能会遇到数据库连接失败的问题。这种问题可能由多种原因导致&#xff0c;包括配置错误、网络设置问题、权限问题等。本文将分析可能的原因&#xff0c;并提供解决方案。 一、确认MySQL容器的运行状态 …...

大数据治理的常见方式

大数据治理的常见方式 大数据治理是确保数据质量、安全性和可用性的系统性方法&#xff0c;以下是几种常见的治理方式&#xff1a; 1. 数据质量管理 核心方法&#xff1a; 数据校验&#xff1a;建立数据校验规则&#xff08;格式、范围、一致性等&#xff09;数据清洗&…...