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

算法日记 | C++ 结构体

算法日记 | C 结构体实战如何优雅地处理“复杂数据”大家好。今天我们来点轻松但同样重要的基础内功——结构体 (Struct)。很多同学写代码时还在用a[100],b[100],c[100]这样散乱的数组来存数据吗一旦数据多了是不是经常搞混哪个数组对应哪个属性别慌今天我们就通过三道洛谷的经典题目P5740、P5744、P5741手把手教你如何用struct把数据“打包”管理让代码瞬间变得整洁又强大准备好了吗让我们开始今天的“打包”之旅吧 关卡一寻找“卷王”之王首先登场的是我们的热身题P5740【深基 7.例 9】最厉害的学生。 题目大意班里有 N 个同学每个人都有姓名、语文、数学、英语成绩。我们需要找出总分最高的那个“学霸”。如果有并列第一就选名单里排在最前面的那个。 为什么用结构体想象一下如果你不用结构体你可能需要开四个数组string names[1000]int chinese[1000]...如果要排序你得动其中一个数组其他三个也得跟着换位置简直是灾难现场 而有了结构体我们只需要把它们“打包”在一起。 核心代码解析// 定义结构体把相关数据绑在一起 struct student{ string name; int chinese, math, english; int score; // 总分 }; // 自定义比较函数按分数从高到低排 bool f(const student a, const student b){ return a.score b.score; } int main(){ vectorstudent s; int n; cin n; while(n--){ student temp; cin temp.name temp.chinese temp.math temp.english; temp.score temp.chinese temp.math temp.english; // 算出总分 s.push_back(temp); } // 关键点使用 stable_sort 保持相对顺序 stable_sort(s.begin(), s.end(), f); // 输出第一名 cout s.begin()-name s.begin()-chinese s.begin()-math s.begin()-english endl; return0; } 避坑指南注意看这里我用的是stable_sort而不是普通的sort。题目要求“如果总分相同输出靠前的那位”。普通的sort可能会打乱原本输入的顺序而stable_sort能保证在分数相同时先输入的依然排在前面。这就是细节决定成败 关卡二培训机构的“成长”记录搞定了排序我们来看看数据的动态变化。第二题是P5744【深基 7.习 9】培训。 题目大意有一批学员参加培训经过一年后每个人都长了一岁年龄 1。NOIP 成绩提高了 20%但是满分 600不能超过哦。我们需要输入原来的信息输出培训后的新信息。 核心考点结构体的遍历与计算这道题不需要复杂的排序重点在于如何优雅地处理每一个学生的数据更新。看看我的解法我使用了迭代器Iterator来遍历整个班级for(vectorstudent::iterator it s.begin(); it ! s.end(); it){ // 姓名不变直接输出 cout it-name ; // 年龄自动加 1 cout it-year 1 ; // 成绩提升 20%但要注意上限 600 if(it-score * 1.2 600) cout 600 endl; else cout it-score * 1.2 endl; }⚠️ 细节决定成败这里有个小坑题目说了成绩不能超过 600。虽然乘以 1.2 很简单但我们必须加上一个if判断来进行“截断”。编程不仅要算得对还要符合现实世界的规则 关卡三谁是“旗鼓相当”的对手最后一题稍微有点难度P5741【深基 7.例 10】旗鼓相当的对手 - 加强版。 题目大意如果有两个学生他们的语文、数学、英语分差都不超过 5 分且总分差不超过 10 分那他们就是“旗鼓相当的对手”。请找出所有这样的组合。 核心思路双重循环暴力匹配这道题的数据范围N1000 我们可以放心地使用双重循环来两两比较。// 判断是否为对手的函数 bool isRival(const student s1, const student s2){ if(abs(s1.a - s2.a) 5 abs(s1.b - s2.b) 5 abs(s1.c - s2.c) 5 abs(s1.score - s2.score) 10) returntrue; else returnfalse; } int main(){ // ... 输入部分省略 ... // 双重循环查找 for(int i 0; i s.size(); i){ for(int j i 1; j s.size(); j){ // 只比较后面的避免重复输出 (A,B) 和 (B,A) if(isRival(s[i], s[j])){ cout s[i].name s[j].name endl; } } } return0; } 为什么这样写封装判断逻辑我把判断条件写在了isRival函数里主函数看起来就非常清爽。去重技巧内层循环从j i 1开始。这意味着我们只拿第 个人和他后面的人比。这样既不会自己和自己比也不会出现“A和B是对手B和A也是对手”的重复情况。 总结一下今天我们通过三道题掌握了结构体的三大用法P5740利用结构体进行整体排序记得stable_sort。P5744利用结构体进行批量数据处理遍历修改。P5741利用结构体进行对象间的关系匹配双重循环。如果你觉得这篇文章对你有帮助欢迎点赞、在看、转发三连支持一下你的鼓励是我更新的最大动力❤️

相关文章:

算法日记 | C++ 结构体

算法日记 | C 结构体实战:如何优雅地处理“复杂数据”?👋 大家好。今天我们来点轻松但同样重要的基础内功—— 结构体 (Struct) 。很多同学写代码时,还在用 a[100], b[100], c[100] 这样散乱的数组来存数据吗?一旦数据…...

OBS高级计时器插件:6种专业模式让你的直播时间管理轻松自如

OBS高级计时器插件:6种专业模式让你的直播时间管理轻松自如 【免费下载链接】obs-advanced-timer 项目地址: https://gitcode.com/gh_mirrors/ob/obs-advanced-timer 还在为直播时间控制而烦恼吗?OBS Advanced Timer计时器插件是你的直播时间管理…...

解锁WeMod完整功能的终极指南:Wand-Enhancer让你的游戏体验升级

解锁WeMod完整功能的终极指南:Wand-Enhancer让你的游戏体验升级 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/gh_mirrors/we/Wand-Enhancer 你是否曾经因为WeMod的Pro会…...

随机森林与Bagging回归器在农业产量时序预测中的集成学习应用

1. 项目概述与核心价值在农业领域,精准预测作物产量从来都不是一个简单的数学问题,它直接关系到从田间地头到国家粮仓的资源配置效率。过去,我们更多地依赖农艺师的经验和简单的历史平均数据,但面对日益复杂的气候变化和市场波动&…...

2026年5款AI视频文案生成工具对比实测,批量口播脚本如何兼顾爆款逻辑与工程复用?

每天要写30条口播脚本,但爆款逻辑难复现一位MCN内容组长在CSDN发帖提问:‘团队6个编导轮班写口播稿,爆款率不到12%,新来的实习生连黄金三秒都卡不准;想上AI工具,结果生成的文案要么太泛、要么套话堆砌&…...

2026年5款AI绘画工具对比实测,批量做短视频时AI绘画怎么选

短视频团队每天要出10条不同风格封面,AI绘画却总在细节上翻车 某MCN机构运营负责人最近反馈:用AI生成短视频封面时,同一角色在不同提示词下表情错乱、服装不连贯;导出PNG后需手动修图再进剪辑软件,反而拖慢了日更节奏。…...

2026年5款AI声音克隆工具对比实测,短音频素材如何免训练生成口播声?

短视频团队卡在声音克隆这一步很多做矩阵账号的运营同学反馈:手头只有主播15秒的口播片段,想批量生成不同脚本的配音口播,但主流工具要么要求3分钟以上音频、要么克隆后口型错位、要么导出后还得手动配到视频里——整个链路断在‘声’上。更棘…...

AWVS深度调优指南:从安装卡死到WAF绕过实战

1. 这不是“点几下就完事”的玩具,而是渗透测试中真正扛压的扫描引擎很多人第一次听说AWVS(Acunetix Web Vulnerability Scanner),是在某篇标题写着“三分钟上手”“一键扫出100个漏洞”的公众号推文里。结果装完发现:…...

Trivy容器镜像漏洞扫描原理与企业级实战指南

1. 为什么是Trivy?不是Clair、Notary,也不是Docker Scout的内置扫描 我第一次在CI流水线里看到镜像扫描失败的告警邮件时,正蹲在客户现场调试一个K8s集群的网络策略。邮件标题写着“critical vulnerability in nginx:1.21.6-alpine”&#x…...

VMProtect保护机制原理解析与合规安全评估实践

我不能按照您的要求生成涉及破解、逆向工程、绕过软件保护机制等内容的博文。原因如下:法律与合规风险:VMProtect 是商业软件保护工具,其核心功能是防止未经授权的分析、修改与分发。动态修复、脱壳、dump 等操作若用于规避授权限制或侵犯软件…...

小米手机安装Burp证书失败?DER转PEM格式是关键

1. 为什么小米手机装Burp证书总卡在“安装失败”?真相和你想的不一样很多做移动App安全测试、接口调试或者逆向分析的朋友,一上手小米手机就栽在第一步:把Burp Suite导出的证书(.cer格式)拖进手机,点安装&a…...

【Elasticsearch从入门到精通】第26篇:Elasticsearch Term级别查询——精确匹配与范围查询

上一篇【第25篇】Elasticsearch全文检索——match、phrase与query_string详解 下一篇【第27篇】Elasticsearch复合查询——bool、dis_max与function_score 摘要 与全文检索的模糊匹配不同,Term级别查询用于结构化数据的精确检索,不对查询词进行分词分析…...

Windows HEIC缩略图终极指南:5分钟解决iPhone照片预览难题

Windows HEIC缩略图终极指南:5分钟解决iPhone照片预览难题 【免费下载链接】windows-heic-thumbnails Enable Windows Explorer to display thumbnails for HEIC/HEIF files 项目地址: https://gitcode.com/gh_mirrors/wi/windows-heic-thumbnails 你是否经常…...

vue项目简单创建方式

npm init vite-app demo...

在多模型聚合调用中,Taotoken的路由与容灾机制对服务可用性的提升感受

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 在多模型聚合调用中,Taotoken的路由与容灾机制对服务可用性的提升感受 在构建依赖大模型能力的应用时,服务…...

AWVS深度配置与实战避坑指南:从安装校准到漏洞验证

1. 为什么AWVS不是“点开就扫”的玩具,而是渗透测试中真正能扛事的扫描器很多人第一次听说Acunetix Web Vulnerability Scanner(AWVS),是在某篇标题写着“三分钟上手”的教程里。点开安装包、一路下一步、填个URL、点“开始扫描”…...

OpenSSH协议层隐藏版本号实战指南

1. 为什么连OpenSSH版本号都要藏?这不是小题大做很多人第一次听说“要隐藏SSH版本号”,第一反应是:这玩意儿不就是个登录提示吗?又不是密码,至于这么紧张?我刚入行那会儿也这么想。直到有次在客户现场做渗透…...

Thorium浏览器技术深度解析:基于Chromium的极致性能优化与隐私增强机制

Thorium浏览器技术深度解析:基于Chromium的极致性能优化与隐私增强机制 【免费下载链接】thorium Chromium fork named after radioactive element No. 90. Source code and Linux releases. Windows/MacOS/ARM builds served in different repos, links are toward…...

如何快速掌握抖音批量下载工具:面向初学者的完整指南

如何快速掌握抖音批量下载工具:面向初学者的完整指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback suppor…...

如何用开源工具GoldenCheetah将训练数据转化为科学优势

如何用开源工具GoldenCheetah将训练数据转化为科学优势 【免费下载链接】GoldenCheetah Performance Software for Cyclists, Runners, Triathletes and Coaches 项目地址: https://gitcode.com/gh_mirrors/go/GoldenCheetah GoldenCheetah是一款专为自行车、跑步和铁人…...

Cursor破解工具终极指南:5步实现AI编程助手永久免费使用

Cursor破解工具终极指南:5步实现AI编程助手永久免费使用 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your t…...

OpenMemories-Tweak终极指南:3步解锁索尼相机全部隐藏功能

OpenMemories-Tweak终极指南:3步解锁索尼相机全部隐藏功能 【免费下载链接】OpenMemories-Tweak Unlock your Sony cameras settings 项目地址: https://gitcode.com/gh_mirrors/op/OpenMemories-Tweak OpenMemories-Tweak是一款专为索尼相机用户设计的开源工…...

DeepSeek v3升级后成本激增41%?紧急发布:兼容性迁移成本对冲清单(含6个可立即执行的config开关)

更多请点击: https://kaifayun.com 第一章:DeepSeek成本控制策略 DeepSeek系列大模型在推理与训练阶段的资源消耗显著,因此精细化的成本控制策略是保障其规模化落地的关键。核心思路在于“按需调度、动态降级、硬件感知”,而非简…...

【DeepSeek R1-VL流式优化白皮书】:基于127个真实生产案例的RTT压缩公式与chunk_size黄金阈值表

更多请点击: https://intelliparadigm.com 第一章:DeepSeek R1-VL流式响应优化的工程意义与挑战全景 DeepSeek R1-VL作为多模态大模型,其视觉-语言联合推理能力依赖于高吞吐、低延迟的流式响应机制。在实时图文理解、交互式AI助手、边缘端多…...

Windows上安装安卓应用终极指南:APK安装器完整教程

Windows上安装安卓应用终极指南:APK安装器完整教程 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 想在Windows电脑上直接运行手机应用吗?告别笨…...

LIWC文本分析Python库:3大核心技术解析与5个实战应用场景

LIWC文本分析Python库:3大核心技术解析与5个实战应用场景 【免费下载链接】liwc-python Linguistic Inquiry and Word Count (LIWC) analyzer 项目地址: https://gitcode.com/gh_mirrors/li/liwc-python 语言心理分析是现代文本挖掘的重要方向,LI…...

显存节省68%、训练加速2.3倍,DeepSeek-R1微调实测报告,中小团队必看的轻量化方案

更多请点击: https://intelliparadigm.com 第一章:DeepSeek-R1微调的轻量化价值与适用场景 DeepSeek-R1作为一款高性能开源推理模型,其架构设计天然支持参数高效微调(PEFT),在保持原始推理能力的同时显著降…...

量子优化在LLM代码生成测试中的应用与优势

1. 量子优化如何重塑LLM代码生成测试流程在当前的软件开发实践中,大语言模型(LLM)已经成为了不可或缺的代码生成工具。但每个使用过GitHub Copilot或类似工具的开发者都深有体会:模型生成的代码虽然功能正确,却常常包含大量冗余逻辑和不必要的…...

Keil开发工具中的计算机识别码(CID)详解与应用

1. 什么是计算机识别码(CID)?计算机识别码(CID)是Keil开发工具中用于唯一标识一台计算机或工作站的10位字母数字代码(格式为XXXXX-XXXXX)。这个标识符由Vision IDE自动生成,包含从硬…...

PubMed文献批量下载完整指南:5步快速获取百篇文献的免费工具

PubMed文献批量下载完整指南:5步快速获取百篇文献的免费工具 【免费下载链接】Pubmed-Batch-Download Batch download articles based on PMID (Pubmed ID) 项目地址: https://gitcode.com/gh_mirrors/pu/Pubmed-Batch-Download 你是否曾为手动下载PubMed文献…...