算竞代码设计与技巧解析

news/2026/1/23 13:31:45/文章来源:https://www.cnblogs.com/Reisentyan/p/19521805

本文使用了ai辅助,旨在更好的帮助大家理解一些技巧

邮递员送信_牛客题霸_牛客网

以这一题为例,需要对节点 1 求 两次 dijkstra,怎么使得代码写的简洁?
ac 代码如下,我们来一一解析:

void solve()
{int n(q_), m(q_);using ED = array<int, 2>;using GRAPH = vector<vector<ED>>;GRAPH tr(n + 1);GRAPH rtr(n + 1);ffp(i, 1, m){int u(q_), v(q_), w(q_);tr[u].push_back({ w,v });//tr是树边,本人的习惯rtr[v].push_back({ w,u });//rtr是反图}auto dij = [&](int st, GRAPH& gp)->ll{priority_queue<ED, vector<ED>, greater<ED>>dui;vector<int>dis(n + 1, iINF); dis[st] = 0;dui.push({ 0,st });while (dui.size()){auto [w, now] = dui.top();dui.pop();if (dis[now] < w)continue;for (auto [nxtw, nxt] : gp[now]){if (nxtw + dis[now] >= dis[nxt])continue;dis[nxt] = nxtw + dis[now];dui.push({ nxtw + dis[now],nxt });}}return accumulate(dis.begin() + 1, dis.end(), 0ll);};cout << dij(1, tr) + dij(1, rtr) << endl;return;
}

【初始化与快读】 首先,我们使用 n(q_), m(q_) 对变量进行初始化。这里的 q_ 是封装好的快读对象(Fast I/O),用于高效读取整数。值得一提的是,n(q_) 使用的是直接初始化(Direct Initialization),而我们常见的 n = q_ 属于复制初始化(Copy Initialization)。虽然在基础类型上二者生成的汇编指令并无差异,但直接初始化更具 Modern C++ 的风格。

【类型别名优化】 为了提升代码的可读性与编写效率,我们使用 using ED = array<int, 2> 为边的存储结构定义别名,同理定义了 GRAPH。这样不仅减少了冗余代码,也便于后续维护。

【存图细节】 在读入边权并建图时,有一个关键细节:tr[u].push_back({ w, v })。请注意,我们将 权值 w 放在了 array 的首位。 这是为了配合后续的 priority_queue。由于 STL 的容器默认按字典序比较(即先比较第一个元素),将权值置于首位,可以直接利用默认的比较规则实现“按权值排序”,无需额外编写比较函数。

【Dijkstra 的封装】 我们使用 Lambda 表达式封装了 Dijkstra 算法。在传参时,图结构 GRAPH 必须使用引用传递(建议为 const 引用),以避免在函数调用时发生巨大的内存拷贝开销,防止 TLE(超时)。

【累加器的陷阱】 计算最终结果时,我使用了 <numeric> 库中的 accumulate 函数。这里潜藏着一个常见的溢出陷阱accumulate 的第三个参数决定了累加过程的数据类型。 如果传入 0,编译器会将其推导为 int 类型进行累加,这在处理大数时会导致溢出。因此,必须显式传入 0ll(即 long long 类型的 0),以确保计算过程使用长整型。

【I/O 细节】 最后,输出时使用 \n 替代 endlendl 会强制刷新缓冲区,在大规模输出场景下可能导致显著的性能损耗。

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

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

相关文章

vue3基于python的流浪猫爱心救助系统

目录 Vue3与Python结合的流浪猫爱心救助系统摘要 项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作 Vue3与Python结合的流浪猫爱心救助系统摘要 技术架构 前端采用Vue3框架实现响应式用户界面&#xff0c;搭…

PPT内容粘贴到CKEDITOR为何动画失效?

教育行业文档导入功能开发记录 一、需求分析与技术选型 作为项目组核心开发成员&#xff0c;我负责实现后台试卷发布模块的文档导入功能&#xff0c;需支持Word/Excel/PPT/PDF四种格式的解析&#xff0c;并保留原始样式与图片。经过技术评估&#xff0c;决定采用以下技术栈&a…

金融保险行业网页,JAVA如何处理多附件的分块上传功能?

大文件传输系统技术方案&#xff08;源码版&#xff09; 作为甘肃IT行业软件公司项目负责人&#xff0c;我深度理解您对大文件传输系统的核心诉求&#xff1a;高稳定性、强兼容性、可扩展加密、无缝集成现有系统。结合贵司200项目规模与信创要求&#xff0c;我团队基于JSP/Spr…

小程序python实验室预约排课系统

目录系统概述核心功能技术实现优势与扩展性应用场景项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作系统概述 Python实验室预约排课系统是一款基于微信小程序和Python后端开发的工具&#xff0c;旨在简化实…

2026年市面上热门的升降机生产厂家联系电话,自行走升降平台/液压升降平台/移动登车桥,升降机生产厂家联系方式

随着城市化进程加速与工业自动化需求提升,自行走升降机作为高空作业、物流搬运的核心设备,其市场呈现技术迭代加速、场景细分深化的趋势。据行业调研机构统计,2025年全球自行走升降机市场规模突破120亿美元,其中中…

python智能水务巡检预警应急调度与决策系统的设计与实现

目录智能水务巡检预警应急调度与决策系统的设计与实现摘要项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作智能水务巡检预警应急调度与决策系统的设计与实现摘要 该系统基于Python技术栈&#xff0c;结合物…

归一化说明

在 AI 算法训练中&#xff0c;归一化&#xff08;Normalization&#xff09; 是一种数据预处理技术&#xff0c;核心是将不同量纲、不同分布范围的特征数据缩放到统一的数值区间&#xff08;最常见为 [0,1][0,1][0,1]&#xff09;&#xff0c;消除数据间的量级差异对模型训练的…

小程序python康养旅游服务系统 计划管理APP 功能多

目录 康养旅游服务系统功能设计技术实现要点 项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作 康养旅游服务系统功能设计 用户管理模块 注册登录&#xff08;手机号/微信授权&#xff09;、个人资料编辑、…

2026 年 1 月条码设备与耗材厂家推荐排行榜:条码打印机/扫描枪/标签/碳带/序列化/追溯系统,专业高效条码解决方案源头厂家精选

2026 年 1 月条码设备与耗材厂家推荐排行榜:条码打印机/扫描枪/标签/碳带/序列化/追溯系统,专业高效条码解决方案源头厂家精选 在数字化转型浪潮席卷全球的今天,条码技术作为数据采集与信息传递的基石,其重要性日益…

【实战项目】 大语言模型轻量化后的下游任务适配性分析

运行效果:https://lunwen.yeel.cn/view.php?id=5974 大语言模型轻量化后的下游任务适配性分析摘要:随着大语言模型的快速发展,其轻量化技术逐渐成为研究热点。然而,大语言模型轻量化后,如何适配下游任务成为一个…

FONE受邀加入华东人工智能应用联盟,获评“首届人工智能应用最佳伙伴”

1月17日&#xff0c;"临平CXO年会暨华东人工智能应用联盟成立大会”在杭州成功举办。本次大会以“智能新发展”为主题&#xff0c;共同探讨人工智能技术的前沿趋势与产业赋能路径。会上&#xff0c;FONE荣获“首届人工智能应用最佳伙伴”&#xff0c;并作为核心成员正式加…

大数据基于Python的电商用户消费行为分析

目录 大数据环境下电商用户消费行为分析的Python实现核心分析流程典型分析场景技术栈组合示例 项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作 大数据环境下电商用户消费行为分析的Python实现 电商平台通…

前端处理Excel:从导入导出到数据处理全攻略

在前端开发中&#xff0c;处理Excel文件是高频需求——无论是后台管理系统的批量数据导入、报表导出&#xff0c;还是用户上传数据的解析校验&#xff0c;掌握操作Excel的技能都能大幅提升产品体验。本文将从实用角度出发&#xff0c;手把手教你用React实现Excel的导入、解析、…

《优雅应对失败:JavaScript异步重试模式详解》

《优雅应对失败:JavaScript异步重试模式详解》一个函数解决90%的异步请求稳定性问题* 异步重试函数* @param {Function} asyncFn - 要执行的异步函数* @param {number} maxRetries - 最大重试次数(包括首次调用)* @…

交易·社交·管理一体化,开源可商用的二手平台小程序源码系统

温馨提示&#xff1a;文末有资源获取方式在共享经济与循环消费理念日益深入人心的今天&#xff0c;一个功能完备、体验流畅的二手交易平台已成为连接供需双方的重要桥梁。源码获取方式在源码闪购网。本系统源码采用主流且稳定的技术栈开发&#xff0c;确保了系统的性能与可靠性…

基于PLC的室内温度控制系统设计(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

基于PLC的室内温度控制系统设计(设计源文件万字报告讲解)&#xff08;支持资料、图片参考_相关定制&#xff09;_文章底部可以扫码电子资料包含:程序&#xff0c;程序仿真&#xff0c;组态仿真&#xff0c;设计报告]本文主要采用温度传感器对温度进行采集&#xff0c;并通过pid…

Docker run 命令详解(-a、-d、-e、-h、-i、-m、-p、-t、-v、--cpuset、--dns、--env-file、--expose、--link、--name、--net)

Docker run 命令详解&#xff1a;这些常用选项&#xff0c;用熟了效率翻倍-d&#xff1a;后台运行容器&#xff0c;不占用命令行-it&#xff1a;交互模式运行&#xff0c;直接进入容器终端-p / -P&#xff1a;端口映射&#xff0c;让外部能访问容器-p&#xff1a;指定端口映射&…

全网最全9个AI论文平台,专科生轻松搞定论文写作!

全网最全9个AI论文平台&#xff0c;专科生轻松搞定论文写作&#xff01; AI工具如何让论文写作变得轻松自如 在当今数字化时代&#xff0c;AI技术正以前所未有的速度改变着我们的学习和工作方式。对于专科生而言&#xff0c;论文写作一直是困扰他们的难题&#xff0c;而AI工具…

2026必备!专科生毕业论文AI论文工具TOP8测评

2026必备&#xff01;专科生毕业论文AI论文工具TOP8测评 2026年专科生论文写作工具测评&#xff1a;为何需要这份榜单&#xff1f; 随着AI技术在教育领域的不断渗透&#xff0c;越来越多的专科生开始借助智能工具提升论文写作效率。然而&#xff0c;面对市场上五花八门的AI论…

哈希表电话号码管理系统(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

哈希表电话号码管理系统(设计源文件万字报告讲解)&#xff08;支持资料、图片参考_相关定制&#xff09;_文章底部可以扫码包含系统设计报告、流程图、代码实现。有系统功能描述、数据结构设计、算法实现等详细说明