noipd8t2 - Slayer

news/2025/10/23 18:41:02/文章来源:https://www.cnblogs.com/slayer-wt/p/19161389

要理解这段代码,需结合题目要求和题解的逆变换 + 辗转相除思路,逐部分分析:

  1. 题目核心与题解思路

    回顾题目要求:给定两个线性变换 \(T1((x,y))=(x+y,y)\)\(T2((x,y))=(x,x+y)\),对于每个查询向量 \((x,y)\),统计有多少个给定的向量可通过若干次\(T1/T2\)变换(包括 0 次)得到。

    题解思路:正向变换可能无限多,逆变换分析更高效。
    观察到:若某一步向量的分量 \(x \leq 0\) 或 \(y \leq 0\),后续会一直保持,而查询的 \((x,y)\) 满足 \(x,y>0\),因此逆变换只有 “大数减小数的倍数” 这一种操作,类似欧几里得辗转相除。对每个给定向量,预处理其 “逆变换的所有中间状态”,存储后排序;查询时,对\((x,y)\)做同样的逆变换,通过二分查找统计符合条件的中间状态数量。

  2. 代码结构与关键逻辑解释

    (1)数据结构与输入处理
    tri 是 std::tuple<int,int,int>,用于存储逆变换过程中的三元组(记录当前分量、余数、原分量信息)。p[0] 和 p[1] 是两个数组,分别存储 “\(a \leq b\)” 和 “\(a > b\)” 两种情况下的三元组;m[0]、m[1] 是对应数组的元素计数。处理每个给定向量 \((a,b)\) 的循环:

    
    for(int a,b,f;n--;){a=read(),b=read(),f=0;while(a&&b)if(a<=b)p[0][++m[0]]={a,b%a,b-f},b%=a,f=1;else p[1][++m[1]]={b,a%b,a-f},a%=b,f=1;
    }

    这里模拟逆变换的辗转相除过程:若 \(a \leq b\),逆变换对应 “由 \((b, a)\) 变换到 \((a, b\%a)\)”,记录三元组 \((a, b\%a, b - f)\)(b - f 用于后续查询时判断原分量范围),然后更新 \(b = b\%a\),标记 \(f=1\)(表示已进行一次操作)。若 \(a > b\),类似处理,记录三元组 \((b, a\%b, a - f)\),更新 \(a = a\%b\),标记 \(f=1\)。循环直到 a 或 b 为 0,此时所有中间状态都被记录到 p[0] 或 p[1] 中。

    (2)排序预处理

    for(int o=2;o--;)std::sort(p[o]+1,p[o]+1+m[o]);
    

    对 p[0] 和 p[1] 分别排序,为后续二分查找做准备,确保能快速统计符合条件的三元组数量。

    (3)查询处理

    for(int a,b,ans;q--;){a=read(),b=read(),ans=0;ans+=std::upper_bound(p[0]+1,p[0]+1+m[0],tri{a,b%a,(int)1e18})-p[0];ans-=std::lower_bound(p[0]+1,p[0]+1+m[0],tri{a,b%a,b})-p[0];ans+=std::upper_bound(p[1]+1,p[1]+1+m[1],tri{b,a%b,(int)1e18})-p[1];ans-=std::lower_bound(p[1]+1,p[1]+1+m[1],tri{b,a%b,a})-p[1];printf("%lld\n",ans);
    }
    

    对每个查询 \((x,y)\)(代码中用a,b接收),模拟逆变换的辗转相除步骤,分两种情况统计:

    • 情况 1(对应p[0]):
      计算 \(y\%x\),在 p[0] 中查找三元组满足 “第一个元素是x、第二个元素是 \(y\%x\)、第三个元素在 \([y, 1e18)\) 范围内” 的数量(通过 upper_bound 和 lower_bound 的差实现)。

    • 情况 2(对应p[1]):
      计算 \(x\%y\),在 p[1] 中查找三元组满足 “第一个元素是y、第二个元素是\(x\%y\)、第三个元素在\([x, 1e18)\)范围内” 的数量。
      两者数量之和即为该查询的答案。

  3. 时间复杂度与效率预处理阶段:

    每个向量的辗转相除次数是 \(O(\log V)\)(V 是分量最大值),共 n 个向量,且排序的时间是 \(O(n \log V \log n)\)

    查询阶段:每个查询的辗转相除次数是 \(O(\log V)\),每次二分查找是 \(O(\log n)\),共 q 个查询,总时间是 \(O(q \log V \log n)\)

    整体复杂度 \(O((n + q) \log V \log n)\),能高效处理题目中的大规模数据。

综上,这段代码通过逆变换 + 辗转相除 + 二分查找的思路,将原问题转化为对 “变换中间状态” 的统计问题,实现了高效的查询。

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

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

相关文章

OJ模拟面试3(异步判题架构)

1、请详细描述一条判题消息从生产到消费的完整生命周期。你在生产者端、Broker端和消费者端分别做了哪些具体配置和编码保证? 这是一个考察消息队列端到端可靠性的经典问题。我的设计目标是:消息绝不能丢。生产者端 …

Edge浏览器网页设置深色模式(仅搜索结果界面)

偶然清除了Edge的浏览数据后发现搜索结果界面变成了白色,很不适应,于是在网络搜索,基本都非常相似,主要分为两种方法Edge浏览器网页设置深色模式/暗模式的小技巧_网页深色模式-CSDN博客①在Edge浏览器打开edge://f…

2025 年 AI 编程工具 TOP5 排名:谁在重新定义研发效率?

当 “写代码” 从 “手动敲” 变成 “AI 帮你想”,研发效率的天花板被彻底打破。2025 年最新出炉的 AI 编程工具排名,不仅是技术实力的较量,更是企业降本增效的 “选型指南”—— 这 5 款工具,已经帮数万家企业实现…

请求中断的原理与分类

本文分享自天翼云开发者社区《请求中断的原理与分类》.作者:尹****聪 1 中断的原理 在nginx中所有的http请求是流式的处理逻辑,当client发出一个请求后,nginx把请求代理到upstream上。如果upstream已经返回了200 OK…

LLM学习笔记DAY9

大语言模型学习笔记 一、大语言模型的局限性 1.1 规划能力不足示例:汉诺塔问题中步骤错误,缺乏校验与修正机制。 需引入规划策略与反思检查策略。1.2 知识时效性与计算能力不足示例:GPT-4回答“美国总统”错误,数值…

【Go】go学习笔记

# 一、Go基础 ## 1. 编译运行 ``` go // 构建二进制文件 go build hello.go ./hello.gogo run hello.go ```## 2. 数据类型 - 布尔型 - 数字类型 - 字符串 - 派生类型- 指针 pointer- 数组- 结构化类型 struct- channe…

破局内容运营效率:2025 微信编辑器 10 款深度测评

破局内容运营效率:2025 微信编辑器 10 款深度测评2025微信编辑器AI革命:全链路解决方案重塑内容生产 一、引言:运营者的效率焦虑与工具迭代机遇 2025年新媒体行业进入“精耕细作”阶段,一篇爆款推文不仅需要优质内…

Web3 行业 Solidity 高级后端开发工程师岗位要求

基本学历与经验要求学历:本科及以上,计算机科学、软件工程、密码学或相关专业优先。 工作经验:3-5 年后端开发经验,其中至少 2 年 Solidity 智能合约开发经验(强制),参与过实际 Web3 项目(如 DeFi、NFT、DAO、…

2025氮化硼陶瓷高温绝缘体/坩埚/套管/基板/高温构件/耐腐蚀构件推荐榜:福维科(山东)引领国产化,3 家企业凭技术实力登榜

在半导体、新能源等高精制造领域,对关键材料的性能要求持续升级,氮化硼陶瓷因兼具优异导热性、绝缘性与耐温性,成为支撑产业升级的核心材料之一。2025 年,随着高端制造国产化进程加快,具备核心技术与稳定产能的氮…

无需接入执行器,0 代码改造实现微服务任务调度

本篇文章通过分析现有解决方案的不足,提出一种新的轻量级解决方案,该方案无需业务改造,且支持多语言,能够有效解决分布式环境下的任务调度幂等执行以及批处理问题。作者:陈欣渝(恰橙) 概述 在现代分布式系统中,…

利用排列组合法实现TOPN路径计算

本文分享自天翼云开发者社区《利用排列组合法实现TOPN路径计算》.作者:罗****斌 1 背景在进行TOPN选路性能摸底时,发现其在100*100节点级别以上的两两互相探测情况下的选路性能不太理想,整体压测后分析发现,选路算…

达梦数据库获取判断字段中的json数据中的值

达梦数据库获取判断字段中的json数据中的值-- 版本支持情况: -- DM7.1.6及之前版本:不支持原生JSON类型,只能用VARCHAR/CLOB存储 -- DM7.6及以后版本:开始支持JSON相关功能 -- DM8.0及以后版本:完整支持JSO…

2025 废气处理/废气治理/环保/污水/分子筛/除臭设备推荐榜:上海深城以专利技术破局,3 家企业凭场景适配登榜,助力异味治理升级

随着工业生产与市政服务的精细化发展,除臭设备与 VOCs 异味治理需求持续增长,高效、低耗、无二次污染的解决方案成为行业核心诉求。2025 年,我们从技术创新性、案例落地能力、工艺成熟度等维度筛选企业,推出本次推…

API 搜索的下一代形态-Apipost智能搜索:只需用业务语言描述需求,就能精准定位目标接口!

在大型项目中,API 数量庞大、命名不一,导致“找接口”耗时费力。传统工具依赖关键词搜索,难以应对语义模糊或命名不规范的场景。Apipost AI 智能搜索功能,支持自然语言查询,如“和用户登录有关的接口”,系统可理…

2025包装机/全自动包装机/非标定制生产线厂家推荐昆仑智能装备,专业高效!

2025包装机/全自动包装机/非标定制生产线厂家推荐昆仑智能装备,专业高效! 一、包装机械行业面临的技术挑战与创新需求 随着制造业智能化转型的深入,包装机械领域正面临前所未有的技术挑战。根据行业调研数据显示,目…

2025拖鞋机/酒店拖鞋生产线厂家推荐昆仑智能,高效稳定自动化解决方案

2025年拖鞋机/酒店拖鞋生产线厂家推荐昆仑智能,高效稳定自动化解决方案 行业技术挑战与现状分析 在当今快速发展的酒店用品制造领域,拖鞋机和酒店拖鞋生产线面临着多重技术挑战。据行业数据显示,传统拖鞋生产设备的…

2025年口罩机厂家权威推荐榜单:全自动口罩机器,全自动KN95口罩机,高效智能生产线专业选购指南

2025年口罩机厂家权威推荐榜单:全自动口罩机器,全自动KN95口罩机,高效智能生产线专业选购指南 随着全球公共卫生意识的持续提升,口罩作为基础防护用品已从应急物资转变为常态化需求。在产业升级与技术迭代的双重驱…

[sed] replace the first line with certain info

If you want to use sed to replace the first line of a file with <div id="lexicoEntryPage">then the proper command is: sed 1s/.*/<div id="lexicoEntryPage">/ inputfile >…

FastDFS 安装部署 数据迁移 centos 安装 FastDFS

FastDFS 安装部署 数据迁移 centos 安装 FastDFS概述: FastDFS 的编译和运行必须依赖于 libfastcommon,两个软件都需要下载之后编译安装 需要先安装libfastcommon再安装FastDFS, 启动时先启动fdfs_trackerd,再启动…

2025摩托车厂家推荐:浙江天鹰机车,专业制造与创新设计之选

2025摩托车厂家推荐:浙江天鹰机车,专业制造与创新设计之选 当前摩托车领域面临的技术挑战 摩托车行业正经历着前所未有的技术变革与挑战。根据行业数据显示,全球摩托车市场年产量已突破6000万辆,但产品同质化率却高…