P9497 「RiOI-2」weight
记录146#includebits/stdc.h using namespace std; #define ll long long // 防止数据溢出使用long long //n*n的矩阵n是1e3 所以N是1e6 const int N1e65; ll a[N],n,q,cnt; // a数组存储打平后的矩阵cnt记录总数字个数 // 从大到小排序的比较函数 bool cmp(ll a,ll b) { return ab; } //因为每一行都可以“任意重排”这就意味着我们拥有极大的自由度。我们可以把矩阵中所有 ≥v的数字像发牌一样尽可能均匀地分配到不同的列里去。 int main() { ios::sync_with_stdio(false); // 关闭同步加速IO cin.tie(0); cinnq; // 1. 读入矩阵并打平成一维数组 for(ll i1;in;i) { for(ll j1;jn;j) { cina[cnt]; } } // 2. 预处理从大到小排序 sort(a1,acnt1,cmp); // 3. 处理每次询问 while(q--) { ll x; cinx; ll ans0,l1,rcnt; // 手写二分查找寻找最后一个 x 的位置 while(lr) { ll mid(lr)/2; if(a[mid]x) { rmid-1; // 中间值小于x说明答案在左边 } else { lmid1; // 中间值x更新答案并向右寻找 ansmid; } } // 满足条件的数字个数不能超过矩阵的列数 n coutmin(ans,n)\n; } return 0; }题目传送门https://www.luogu.com.cn/problem/P9497前言我是一名专注信奥赛CSP-J/S、NOIP的教练。如果你觉得这篇题解对你有帮助欢迎点击关注我的CSDN账号我会持续更新高质量算法解析。我深知算法思维的构建远比单纯通过题目更重要本系列题解不局限于AC代码的堆砌而是致力于拆解题目背后的逻辑链条与核心知识点备赛路上若遇瓶颈欢迎随时评论或私信我将甄选典型疑难问题通过视频讲解或撰写专项文章的形式为你提供深度答疑。代码分块详细解释1. 头文件、常量与全局变量定义#includebits/stdc.h using namespace std; #define ll long long // 防止数据溢出使用 long long // n*n的矩阵n是1e3所以总元素个数是1e6 const int N1e65; ll a[N], n, q, cnt; // a数组存储打平后的矩阵cnt记录总数字个数详细分析矩阵的最大规模是 10^3×10^310^6 因此数组大小需要开到 10^6级别。由于矩阵中的数值和阈值 vv 最高可达 10^9 为了防止潜在的溢出风险代码统一使用了long long类型。cnt变量用于在读取矩阵时充当一维数组的索引计数器。2. 排序比较函数// 从大到小排序的比较函数 bool cmp(ll a, ll b) { return a b; }详细分析标准库的sort默认是升序排列。为了方便后续的二分查找我们希望 ≥v≥v 的数字集中在数组的前端这里自定义了一个降序排列的比较函数。3. 主函数输入处理与预处理int main() { ios::sync_with_stdio(false); // 关闭同步加速IO cin.tie(0); cin n q; // 1. 读入矩阵并打平成一维数组 for(ll i 1; i n; i) { for(ll j 1; j n; j) { cin a[cnt]; } } // 2. 预处理从大到小排序 sort(a 1, a cnt 1, cmp);详细分析这部分完成了核心的预处理。通过双重循环将二维矩阵的 n^2个元素全部读入一维数组a中。随后调用sort进行降序排序。这一步的时间复杂度是 O(n2log⁡n2) 由于只执行一次完全可以接受。4. 核心逻辑处理询问与手写二分// 3. 处理每次询问 while(q--) { ll x; cin x; ll ans 0, l 1, r cnt; // 手写二分查找寻找最后一个 x 的位置 while(l r) { ll mid (l r) / 2; if(a[mid] x) { r mid - 1; // 中间值小于x说明答案在左边 } else { l mid 1; // 中间值x更新答案并向右寻找 ans mid; } } // 满足条件的数字个数不能超过矩阵的列数 n cout min(ans, n) \n; } return 0; }详细分析这是代码的灵魂部分用于处理高达 5×1055×105 次的询问。手写二分对于当前的阈值 xx 我们需要找出数组中有多少个元素 ≥x≥x 。由于数组是降序的所有 ≥x≥x 的元素会连续出现在数组的前端。二分查找的else分支a[mid] x会不断向右推进l并用ans记录下当前满足条件的最右位置。循环结束后ans就是 ≥x≥x 的元素总个数。贪心取最小值ans代表了理论上能凑出的最大列数。但如果ans n比如矩阵里全是 ≥x≥x 的大数ans达到了 n2n2 受限于矩阵只有 nn 列我们最多只能让 nn 列达标。因此最终输出min(ans, n)。核心逻辑总结表代码模块核心变量/操作精炼作用解决的痛点矩阵打平cin a[cnt]将二维矩阵转化为一维数组打破行列的物理限制便于全局统计和排序降序预处理sort(..., cmp)将数组按从大到小排列使得所有 ≥v≥v 的元素集中在数组前端为二分查找提供单调性基础

相关新闻

人工智能毕业设计2026课题怎么做

人工智能毕业设计2026课题怎么做

0 选题推荐 - 云计算篇 毕业设计是大家学习生涯的最重要的里程碑,它不仅是对四年所学知识的综合运用,更是展示个人技术能力和创新思维的重要过程。选择一个合适的毕业设计题目至关重要,它应该既能体现你的专业能力,又能满足实际应…

2026/7/15 0:51:34阅读更多 →
两地三中心异地多活交易架构深度落地:机房级故障秒级容灾、业务零中断方案

两地三中心异地多活交易架构深度落地:机房级故障秒级容灾、业务零中断方案

前言对于金融、头部电商、支付交易、核心政企系统而言,高并发、高可用只是基础,业务永不中断才是底线。普通单机房、同城单活架构,只能解决服务器宕机、服务重启、单节点故障等常规问题,完全无法抵御机房级、城市级灾难性故障。机…

2026/7/15 0:51:34阅读更多 →
ollama v0.32.0发布:交互式智能体正式上线,命令行入口彻底升级,ChatGPT集成更名,旧模型启动前新增弃用警告

ollama v0.32.0发布:交互式智能体正式上线,命令行入口彻底升级,ChatGPT集成更名,旧模型启动前新增弃用警告

前言 ollama v0.32.0 已正式发布。对于持续关注本地模型、命令行工作流以及模型工具链体验的开发者来说,这次更新虽然看起来只有几条变更说明,但每一条都非常关键,甚至可以说直接影响了日常使用方式。 这一次,ollama v0.32.0 的变…

2026/7/15 0:51:34阅读更多 →
OpenHarmony 网络请求 axios 封装(@ohos.net.http API23 适配)

OpenHarmony 网络请求 axios 封装(@ohos.net.http API23 适配)

摘要原生ohos.net.http底层 API 写法繁琐,缺少统一拦截、超时、错误统一处理、loading 全局控制、请求取消、token 自动携带等通用能力。基于原生 http 封装类 axios 风格网络工具,统一管理全局请求头、请求拦截、响应拦截、异常捕获、加载弹窗&#xff…

2026/7/15 1:56:41阅读更多 →
玩转集成|告别繁琐!Slack中无缝启用Claude Code的完整指南与实战场景

玩转集成|告别繁琐!Slack中无缝启用Claude Code的完整指南与实战场景

1. 为什么要在Slack中使用Claude Code? 作为一名长期使用AI编程助手的开发者,我深刻体会到在团队协作环境中频繁切换工具的痛苦。每次遇到代码问题都要离开Slack去网页端操作,不仅打断工作流,还容易丢失上下文。Claude Code与Sla…

2026/7/15 1:56:41阅读更多 →
C语言中的exit()函数

C语言中的exit()函数

函数名: exit() 所在头文件:stdlib.h 功 能: 关闭所有文件,终止正在执行的进程。 exit(1)表示异常退出.这个1是返回给操作系统的。 exit(x)(x不为0)都表示异常退出 exit(0)表示正常退出 exit()的参数会被传递给一些操作系统&#…

2026/7/15 1:56:41阅读更多 →
MSP430FR59xx内存映射与寄存器操作实战指南

MSP430FR59xx内存映射与寄存器操作实战指南

1. 项目概述与核心价值如果你正在使用德州仪器(TI)的MSP430FR59xx系列微控制器,比如FR5972或FR5872,并且已经过了点灯、调通串口的入门阶段,那么你迟早会碰到一个绕不开的坎:内存映射和寄存器。这两个概念&…

2026/7/15 1:56:41阅读更多 →
Python零基础入门:从环境搭建到实战项目的完整学习路径

Python零基础入门:从环境搭建到实战项目的完整学习路径

如果你正在考虑学习编程,或者已经尝试过但被各种复杂概念劝退,那么Python可能是你最好的起点。但问题来了:面对网络上铺天盖地的教程,从哪开始才能真正入门而不半途而废?很多教程要么过于理论化,要么直接跳…

2026/7/15 1:56:41阅读更多 →
深入解析TMS320F28035内存映射、启动引导与代码安全模块

深入解析TMS320F28035内存映射、启动引导与代码安全模块

1. 项目概述:深入TMS320F28035-EP的底层架构在工业电机驱动、数字电源或者任何对实时性和可靠性有严苛要求的嵌入式系统里,选对微控制器只是第一步。真正决定项目成败的,往往是开发者对这颗芯片“内在”的理解深度——它的内存如何布局、上电…

2026/7/15 1:51:38阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/14 4:56:14阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/14 2:55:05阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/14 6:17:41阅读更多 →
AI框架决定企业AI能走多远

AI框架决定企业AI能走多远

企业AI建设的第一性原理 企业搞AI,最关键的决定是什么?不是选哪家大模型,不是先做哪个场景,不是招多少AI人才——而是选哪个AI开发框架。 为什么?因为框架决定了企业AI能力的"天花板"。选对了框架&#xff0…

2026/7/15 0:01:30阅读更多 →
Java企业为什么需要AI框架

Java企业为什么需要AI框架

Java企业在AI时代的尴尬处境 Java是全球企业级应用开发的主流语言——全球超过一半的企业系统跑在Java上。但在AI浪潮面前,很多Java企业感到尴尬:大模型的接口是各种语言的,AI开发社区以其他语言为主流,似乎Java在AI时代"掉队…

2026/7/15 0:01:30阅读更多 →
CC3230x嵌入式开发实战:SD主机、定时器与低功耗模式深度解析

CC3230x嵌入式开发实战:SD主机、定时器与低功耗模式深度解析

1. 项目概述:为什么需要关注CC3230x的SD主机、定时器与低功耗?在物联网和嵌入式设备开发领域,我们常常面临一个核心矛盾:设备需要具备强大的连接能力、可靠的数据存储和实时控制功能,同时又必须严格控制功耗以延长电池…

2026/7/15 0:01:30阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/14 15:07:30阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/14 4:45:36阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/14 2:42:17阅读更多 →