尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
【题解】P11830 [省选联考 2025] 幸运数字
P11830 [省选联考 2025] 幸运数字 - 洛谷 (luogu.com.cn)看到中位数就应该想到分为小于中位数、等于中位数和大于中位数。题目中中位数的位置显然和这三种数值的数量有关系设它们的数量分别为。设当前数值为我们强制让成为中位数应该满足1如果的话中位数将大于。2如果的话中位数将小于。我们该如何想到这些条件反推中位数不等于的情况即可前半部分过多中位数变小后半部分过多中位数变大那么对于我们就有同时可以选中位数的尽量多选。也就是让变大这样一定会让该中位数被选择的概率增大。我们发现每个值的可以差分处理也就是对于值区间为的值。我们统一让它们的贡献加上对应前文中的要尽量大。对于当前值区间作为我们则在上差分因为用到这个就代表着一定比大。对于当前值区间作为我们则在上差分因为用到这个就代表着一定比小。#includebits/stdc.h using namespace std; typedef long long LL; const int N 2e5 10; const int M 2 * N; int n, ln, cf, ans; // ln:离散化后点数, cf:当前覆盖 x 的区间数 int l1[N], r1[N], l2[N], r2[N]; // 输入的四元组 int dc[M]; // 离散化坐标所有 l2 和 r21 LL sumb, mna, mxa, mnc, mxc, sumf; // 当前扫描到的累计值 LL bs[M], al[M], ar[M], cl[M], cr[M], f[M]; // 差分数组 // bs: 等于 x // al: amin // ar: amax // cl: cmin // cr: cmax // f: 覆盖x的区间数量的差分 (用于判断是否有区间包含x) void solve() { cin n; for (int i 1; i ln; i ) { bs[i] al[i] ar[i] cl[i] cr[i] f[i] 0; } ln sumb mna mxa mnc mxc sumf ans 0; for (int i 1; i n; i ) { cin l1[i] r1[i] l2[i] r2[i]; dc[ ln] l2[i]; dc[ ln] r2[i] 1; // 我们将全闭区间变为左闭右开区间方便计算差分 } sort(dc 1, dc 1 ln); ln unique(dc 1, dc 1 ln) - dc - 1; // 构建差分数组每个区间对四个量产生影响 for (int i 1; i n; i ) { // 这里的 x 和 y 对应着当前区间可选的最小值和最大值 int x lower_bound(dc 1, dc 1 ln, l2[i]) - dc; // 左端点位置 int y lower_bound(dc 1, dc 1 ln, r2[i] 1) - dc; // 右端点 1 位置 // 等于当前值的区间贡献在 [l2, r2] 内增加 r1 bs[x] r1[i]; bs[y] - r1[i]; // 当前值区间作为别人的 a al[y] l1[i]; // 当别人的 amin取最少的数量 ar[y] r1[i]; // 当别人的 amax取最多的数量 // 当前值区间作为别人的 c cl[1] l1[i]; // 当别人的 cmin取最少的数量 cl[x] - l1[i]; // 只有比 x 小的才能选为 c cr[1] r1[i]; // 当别人的 cmax取最多的数量 cr[x] - r1[i]; // 只有比 x 小的才能选为 c // 覆盖当前值的区间数量计数 f[x] ; f[y] --; } for (int i 1; i ln; i ) { // 累计当前点的值 sumb bs[i]; // 等于 x 的个数总和 mna al[i]; // 小于 x 的最小可能个数 mxa ar[i]; // 小于 x 的最大可能个数 mnc cl[i]; // 大于 x 的最小可能个数 mxc cr[i]; // 大于 x 的最大可能个数 sumf f[i]; // 覆盖 x 的区间数量 // 必须有区间覆盖 x否则 x 不会出现在集合中 if (sumf 0) continue; LL lef max(mna - sumb 1, mnc); LL rig min(mxa sumb, mxc); if (lef rig) { // 这段区间内所有整数点都满足条件加入长度 ans dc[i 1] - dc[i]; } } cout ans \n; } int main () { ios::sync_with_stdio(false); cin.tie(0); int c, T; cin c T; while(T --) { solve(); } return 0; }
RELATED

相关推荐

AI力场二次开发教程(03):第一个AI力场分子——SMILES 到 OpenMM System 全流程

AI力场二次开发教程(03):第一个AI力场分子——SMILES 到 OpenMM System 全流程

AI力场二次开发教程(3):第一个AI力场分子——SMILES 到 OpenMM System 的全流程复现版本声明:本文运行环境为第 02 篇所建的 espaloma0.3.2 openff-toolkit0.19.0 OpenMM;Python 3.10;本文完整复现 espal…

📅 2026/9/17 16:32:02
【C++ 入门】类与对象:class 定义、类域、实例化与 this 指针

【C++ 入门】类与对象:class 定义、类域、实例化与 this 指针

文章目录前言一、class 定义类c封装与访问限定符二、类域三、实例化类对象内存成员分析对齐规则四、this指针前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要&#xff…

📅 2026/10/26 10:18:25
Anthropic估值2万亿美元是如何推演的?AI大模型估值框架与Python模拟

Anthropic估值2万亿美元是如何推演的?AI大模型估值框架与Python模拟

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/7 19:17:03
MORE NEWS

更多资讯

📰

用Cloudflare Workers构建云桌面:cloudflare-os架构与实现解析

第一次在浏览器里打开 cloudflare-os 的时候,我愣了几秒——桌面上有文件管理器、文本编辑器、系统设置,甚至还有一个终端,你以为自己误开了一个云桌面,但其实背后没有一台属于你的服务器。这整个"操作系统"跑在 Cloudf…

📰

MATLAB集成量子计算BQP后端的工程实践指南

1. 项目概述:这不是“量子科普”,而是工程师桌面上的真实工具链“BQP与MATLAB集成”这个标题,乍看像一篇理论计算机科学论文的副标题——但如果你正坐在某高校实验室的工位上,手边摊着一份未完成的电机控制仿真报告,或…

📰

MATLAB量子模块实战:BQP算法工程化集成与工作流改造

1. 这不是“量子科普”,而是工程师能立刻上手的MATLAB工作流改造方案“BQP与MATLAB集成”这个标题,乍看像一篇理论计算机科学论文的副标题——但如果你是某高校实验室里天天调PID参数、跑Simulink模型、处理振动传感器时序数据的工程师,或者是…

📰

从通用Agent到专用Skills:AI开发范式转变与实践

1. 从Agent到Skills的范式转变在AI技术快速发展的当下,我们正经历着从构建通用Agent(智能体)向发展特定Skills(技能)的重要转变。这种转变不仅仅是技术方向的调整,更是对AI应用落地方式的重新思考。作为一名…

📰

量化交易中加密API的痛点与高频数据解决方案

1. 量化交易的隐秘痛点:为什么通用加密API总是差一口气上周和某对冲基金的技术负责人喝咖啡时,他吐槽道:"我们每年花上百万买的市场数据API,真正能用的不到30%"。这句话道破了量化圈的普遍困境——市面上90%的加密API提…

📰

Java老人健康管理系统:架构设计与技术实现

1. 项目概述:老人健康信息管理系统的核心价值这个基于Java技术栈的老人健康管理系统,本质上是一个面向养老机构、社区医疗中心和家庭照护场景的数字化健康管理平台。我去年为某连锁养老机构部署类似系统时,发现传统纸质记录存在三大痛点&…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬