AtCoder Beginner Contest 478
AtCoder Beginner Contest 478A - Grapes题意有N个人编号为1到N现在要把M颗葡萄分给他们。每次按照1, 2, …, N的顺序每人分一颗分到第N个人以后再从第1个人开始直到所有葡萄分完。最后输出每个人分到了多少颗葡萄。思路这个题直接按照题意模拟就可以了。我们用数组记录每个人分到的葡萄数量每分出去一颗就移动到下一个人。到达最后一个人以后又需要回到第一个人所以可以使用取模来实现循环。代码中数组下标从0开始i表示已经分出了多少颗葡萄那么下一颗就分给下标为i % n的人。例如N3、M5时下标依次是0, 1, 2, 0, 1所以最后每个人得到的数量是2, 2, 1。注意输出时每个人的数量各占一行。因为M最多只有10000逐颗模拟完全可以通过。时间复杂度为O(M N)空间复杂度为O(N)。#include bits/stdc.h using namespace std; int main() { int n, m; cin n m; vectorint ans(n 1, 0); int i 0; while (m) { ans[i % n]; i; m--; } for (int i 0; i n; i) cout ans[i] endl; return 0; }B - Topping题意拉面店有N种配料第i种配料的价格是i快乐值是W[i]。我们需要选择恰好三种不同的配料并且总价格不能超过V问我们能够得到的最大快乐值是多少。题目保证至少存在一种合法的选择。思路最开始看到“价格不能超过V还要让快乐值最大”可能会想到背包但是这个题只需要选三种配料而且N最多是100所以直接枚举这三种配料就足够了。我们用三重循环枚举编号i、j、k并让它们满足i j k。这样既保证选择的是三种不同的配料又不会把同一组配料按照不同顺序重复枚举。对于每组选择如果i j k v就用w[i] w[j] w[k]更新答案。注意这里价格是配料编号数组w存的是快乐值所以判断预算时比较的是编号之和不是快乐值之和。N100时只会枚举161700种组合时间复杂度为O(N^3)空间复杂度为O(N)。#include bits/stdc.h using namespace std; int main() { int n, v; cin n v; vectorint w(n 1); for (int i 1; i n; i) cin w[i]; int ans 0; for (int i 1; i n; i) { for (int j i 1; j n; j) { for (int k j 1; k n; k) { if (i j k v) ans max(ans, w[i] w[j] w[k]); } } } cout ans endl; return 0; }C - Sort Subarray题意给我们一个长度为N的整数数组A以及一个整数K。我们必须进行恰好一次操作选择一个长度为K的连续区间把这个区间中的元素按升序排序。问能不能通过这一次操作让整个数组都变成升序也就是满足A[i] A[i1]。数组中可能有重复元素。思路这个题最开始可以想到暴力枚举区间。我们尝试每一个起点复制数组、排序对应的K个元素再检查整个数组是否有序。但是这样会重复排序很多次最坏时间复杂度达到O(N^2 log N)而N可以达到2 × 10^5显然不能这样做。第一步先想清楚我们最后到底要得到什么数组虽然可以选择不同的区间但如果操作后整个数组有序那么最终的数组是确定的它一定等于把原数组完整排序后的结果。所以我们先复制一份数组B然后把B完整排序。接下来不急着枚举区间而是比较A和B看看哪些位置还没有到它们应该在的状态。例如位置12345原数组A14325目标数组B12345这里第2、4个位置不同因此这两个位置必须被修改。第二步哪些位置必须包含在操作区间内一次排序只能改变我们选中的区间区间外的元素完全不会动。因此如果某个位置满足a[i] ! b[i]这个位置就必须在操作区间里否则它永远无法变成目标值。我们记录第一个不同的位置L以及最后一个不同的位置R。操作区间是连续的所以必须包含整个[L, R]即使中间有些位置本来就是正确的也不能跳过去。因此如果R - L 1 K就说明长度为K的区间放不下所有需要修改的位置答案一定是No。第三步跨度不超过K为什么就一定可以如果R - L 1 K我们可以把[L, R]向两边适当扩展选出一个长度恰好为K、并且包含它的合法区间。靠近数组边界时向另一边补足即可。这个区间外没有错位位置所以A和B在区间外已经完全相同。又因为B本来就是A排序得到的两者整体包含的元素以及每个元素出现的次数都相同。扣除区间外相同的部分区间内的元素及其次数也必然相同。而B的这个区间已经有序所以把A的这个区间排序以后一定会得到B中对应的部分。这样区间内外就都和B一致整个数组也就有序了。所以首尾错位位置的跨度不超过K就是能够完成操作的条件。这个结论对重复元素也成立。在上面的例子中L2、R4跨度为3。K3时排序第2到第4个元素即可K2时无论选哪个区间都无法同时修改第2和第4个位置。第四步注意原数组已经有序的情况。如果A和B完全相同答案直接是Yes。虽然题目要求恰好操作一次但已经有序的数组中任意一个长度为K的区间也都有序再排序一次不会改变数组。你下面的代码把mn初始化为1e8mx初始化为0。如果没有不同位置它们就不会更新算出的cnt是负数因此会进入cnt k并输出Yes。这个结果是正确的不过这里的负数只是初始值未更新造成的不能把它理解成真实的区间长度。最后把流程串起来就是复制A得到B并排序 → 找到首尾不同的位置 → 判断这两个位置的跨度是否不超过K如果没有不同位置则本来就已经有序。时间复杂度主要来自对B的排序为O(N log N)需要保存两个数组空间复杂度为O(N)。#include bits/stdc.h using namespace std; int main() { int n, k; cin n k; vectorint a(n 1), b(n 1); for (int i 1; i n; i) { cin a[i]; b[i] a[i]; } sort(b.begin() 1, b.end()); int mn 1e8, mx 0; for (int i 1; i n; i) { if (a[i] ! b[i]) { mn min(mn, i); mx max(mx, i); } } // cout mx mn endl; int cnt mx - mn 1; if (cnt k) cout Yes endl; else cout No endl; return 0; }D - Range Set Insertion Query题意起初我们有N个空SetS1,S2,…,SNS_1, S_2, \ldots, S_NS1​,S2​,…,SN​接下来我们要对这N个set进行Q次操作每次操作往LiL_iLi​和RiR_iRi​范围内的SSSset添加XiX_iXi​这个数问我们经历过若干次操作后我们每个Set中都有多少个数字。思路读完题模拟了一下数据我们很容易想到差分因为最后统计的是我们每个Set中会有多少个数字因此每次操作可以当成在LiL_iLi​和RiR_iRi​范围内的SSSset 1最后我们做一次前缀和就可以得到我们最后的结果了吗NO本题最麻烦的一个地方就是我们的XiX_iXi​是可以能重复的也就是我们可能会在某个区间的范围内加入若干次我们相同的某个数字。那么既然这样直接做是不对的那我们该如何去处理我们的这个插入呀。既然我们可能会在部分区间添加多次我们的XiX_iXi​那我们是不是可以提前处理一下我们的区间让可能会造成重复添加的区间不在重复添加也就是合并我们添加相同XiX_iXi​的区间这样我们就不会再出现一个区间添加两次XiX_iXi​了这里我要强烈推荐一下我的区间合并模板真的好用。区间合并模板vectorpairint, int b; //处理输入输出 sort(b.begin(), b.end()); vectorpairint, int tmp; //合并后的新区间数组 for (auto c : b) { if (tmp.empty() || c.first tmp.back().second) tmp.push_back({c.first, c.second}); else tmp.back().second max(tmp.back().second, c.second); }完整代码#include bits/stdc.h using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n, q; cin n q; vectorint ans(n 1, 0); mapint, vectorpairint, int cnt; for (int i 0; i q; i) { int l, r, x; cin l r x; cnt[x].push_back({l, r}); } for (auto [a, b] : cnt) { sort(b.begin(), b.end()); vectorpairint, int tmp; for (auto c : b) { if (tmp.empty() || c.first tmp.back().second) tmp.push_back({c.first, c.second}); else tmp.back().second max(tmp.back().second, c.second); } for (int i 0; i tmp.size(); i) { ans[tmp[i].first]; if (tmp[i].second 1 n) ans[tmp[i].second 1]--; } } for (int i 1; i n; i) ans[i] ans[i - 1]; for (int i 1; i n; i) cout ans[i] ; return 0; }

相关新闻

google-api-nodejs-client 的 ondemandscanning 模块演进全解读:从 CHANGELOG 版本脉络到容器镜像漏洞扫描实战

google-api-nodejs-client 的 ondemandscanning 模块演进全解读:从 CHANGELOG 版本脉络到容器镜像漏洞扫描实战

后端 【免费下载链接】google-api-nodejs-client Googles officially supported Node.js client library for accessing Google APIs. Support for authorization and authentication with OAuth 2.0, API Keys and JWT (Service Tokens) is included. 项目地址: h…

2026/10/16 6:27:53 阅读更多 →
用Python和SQLite自建个人财务数据中台:从记账到自由分析

用Python和SQLite自建个人财务数据中台:从记账到自由分析

1. 从"financial-services"到个人财务数据中台:我为什么自建了一套记账分析系统先说个背景。我一直在关注"financial-services"这个方向,但说实话,金融服务的概念太大了——从银行App到支付工具,从个人记账软…

2026/10/16 6:27:53 阅读更多 →
Zabbix 监控 TACACS 服务实战:App TACACS Service 模板(net.tcp.service 简单检查)全解析

Zabbix 监控 TACACS 服务实战:App TACACS Service 模板(net.tcp.service 简单检查)全解析

【免费下载链接】community-templates Zabbix Community Templates repository 项目地址: https://gitcode.com/gh_mirrors/co/community-templates 点击查看 免费下载 本文围绕 Zabbix Community Templates 仓库中的 App TACACS Service 模板展开,讲解…

2026/10/16 6:26:53 阅读更多 →

最新新闻

面向对象核心知识详解:从类与对象到封装继承多态

面向对象核心知识详解:从类与对象到封装继承多态

最近重新翻出自己几年前记的一套面向对象基础笔记,边看边感慨。当年跟着一套讲得很细的Java基础课,逐行敲代码、抄概念、画内存图的日子,其实才是真正把编程底子打牢的阶段。面向对象这四个字,很多新手一听就觉得抽象,…

2026/10/16 7:14:04 阅读更多 →
antenna-forge 的核心信条:为什么『绝不伪造结果』是电磁仿真平台不可妥协的底线

antenna-forge 的核心信条:为什么『绝不伪造结果』是电磁仿真平台不可妥协的底线

【免费下载链接】antenna-forge AI-driven inverse antenna design with real NEC2 openEMS in the loop. Try the live in-browser playground. 项目地址: https://gitcode.com/gh_mirrors/an/antenna-forge 点击查看 免费下载 antenna-forge(YAF&…

2026/10/16 7:14:04 阅读更多 →
Markdown转知识卡片:解决公众号手机端排版难题的利器

Markdown转知识卡片:解决公众号手机端排版难题的利器

作为一个常年用 Markdown 码字、又经常要打理手机端内容的人,我最烦的一件事就是:电脑上排得好好的文章,一到公众号后台粘贴就彻底翻车。代码块没有高亮、列表层级全丢、整段文字挤成一堵密不透风的墙,读者拿手机看两行就划走了。…

2026/10/16 7:14:04 阅读更多 →
SSM+Vue实战:学生作业管理系统开发全攻略

SSM+Vue实战:学生作业管理系统开发全攻略

每年到毕业季,总有学生为毕设选题和实现头疼。如果你正好在找Java方向的系统类毕设,或者想做一个能跑通前后端分离的完整项目,“基于SSMVue的学生作业管理系统”是个非常经典且性价比极高的选择。这个项目不复杂但五脏俱全,覆盖了…

2026/10/16 7:14:04 阅读更多 →
REPENTOGON 的 Lua Vector 类深度指南:运算符元方法、FromAngle 与 nil 安全修复

REPENTOGON 的 Lua Vector 类深度指南:运算符元方法、FromAngle 与 nil 安全修复

游戏开发插件系统 【免费下载链接】REPENTOGON Script extender for The Binding of Isaac: Repentance 项目地址: https://gitcode.com/gh_mirrors/re/REPENTOGON 点击查看 免费下载 Vector 是《以撒的结合:忏悔》(The Binding of Isaac: R…

2026/10/16 7:14:04 阅读更多 →
OCR自动标注工具实战:检测识别与人工复核的全流程解析

OCR自动标注工具实战:检测识别与人工复核的全流程解析

说到OCR自动标注,做过数据标注或者AI数据集相关工作的人应该都不陌生。不管是票据、合同、书页扫描件,还是截图、卡片、白底商品图,只要涉及文字信息结构化,第一步都是把图片里的文字区域框出来,再把文字内容读出来&am…

2026/10/16 7:13:04 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

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

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/15 9:49:14 阅读更多 →