题解:Atcoder Beginner Contest abc466 A~D

发布时间:2026/10/27 15:32:02

题解:Atcoder Beginner Contest abc466 A~D A - Compromise题目描述有 $N$ 个选择。你将选择其中之一。如果你选择 $i$ \-个选项你的幸福感将是 $X #95; i$ 。如果无论你选择哪个选项你的幸福感都是负数那么输出 Yes 否则输出 No 。解题思路A题不讲了。脑残题。完整代码#includebits/stdc.h #define fr1(i,a,b) for(int (i)(a);(i)(b);(i)) #define fr2(i,a,b) for(int (i)(a);(i)(b);(i)--) #define fv(i,p) for(auto (i):(p)) #define ll long long #define ull unsigned ll #define pii pairint,int #define pll pairll,ll #define _1st first #define _2nd second #define elif else if #define debug coutendl-------------------------------------------------------------endl using namespace std; int main(){ ios::sync_with_stdio(false); cin.tie(NULL);cout.tie(NULL); int n; cinn; bool flagfalse; fr1(i,1,n){ int x; cinx; if(x0)flagtrue; } if(flag)coutNo\n; else coutYes\n; return 0; }B - Representative Balls题目描述有 $N$ 个球。第 $i$ 个球的颜色是 $C_i$ 大小是 $S_i$ 。这里颜色用整数 $1, 2, \ldots, M$ 表示。对于 $k 1, 2, \ldots, M$ 输出颜色为 $k$ 的球的最大大小如果没有颜色为 $k$ 的球则输出 $-1$ 。解题思路最脑残的一次B题。完整代码#includebits/stdc.h #define fr1(i,a,b) for(int (i)(a);(i)(b);(i)) #define fr2(i,a,b) for(int (i)(a);(i)(b);(i)--) #define fv(i,p) for(auto (i):(p)) #define ll long long #define ull unsigned ll #define pii pairint,int #define pll pairll,ll #define _1st first #define _2nd second #define elif else if #define debug coutendl-------------------------------------------------------------endl using namespace std; int main(){ ios::sync_with_stdio(false); cin.tie(NULL);cout.tie(NULL); int N,M; cinNM; int mx[105]; fr1(i,1,M)mx[i]-1; fr1(i,1,N){ int c,s; cincs; mx[c]max(mx[c],s); } fr1(k,1,M){ if(k1)cout ; coutmx[k]; } return 0; }C - Count Close Pairs题目描述这是一个交互式问题在这个问题中你的程序和法官程序通过标准输入和输出进行通信。在一条数线上点 $1$ 、 $2$ 、 $\ldots$ 、 $N$ 从左到右依次排列。最初只给出整数 $N$ 。然后你最多可以向法官提出以下问题 ${2N}$ 次选择满足 $1 \leq i lt; j \leq N$ 的整数 $i$ 和 $j$ 问点 $i$ 和 $j$ 之间的距离是否最多为 $1$ 。输出距离最多为 $1$ 的点对的个数即满足 $1 \leq i lt; j \leq N$ 的整数 $(i,j)$ 中点 $i$ 与 $j$ 之间的距离最多为 $1$ 的点对的个数。如何交互首先从标准输入中接收代表点数的整数 $N$ $N$然后你可以向法官重复问题陈述中描述的问题最多 $2N$ 次。按以下格式将问题输出到标准输出其中 $i$ 和 $j$ 必须是满足 $1 \leq ilt;j \leq N$ 的整数? $i$ $j$作为对此的回应将从标准输入中给出以下信息之一Yes或者No。这里 $Yes$ 表示点 $i$ 和 $j$ 之间的距离最多为 $1$ $No$ 表示点 $i$ 和 $j$ 之间的距离大于 $1$ 。找到问题答案 $X$ 后按以下格式输出答案然后立即终止程序! $X$解题思路居然是滑动窗口。。。基本框架针对每个点 $1,2,\ldots,N$ 找出 $M_i$ 与 $i\leq M_i\leq N$ 的最大值使得从点 $i$ 到点 $M_i$ 的距离最多为 $1$ 。答案为 $ (M_1-1)(M_2-2)\cdots(M_N-N)$ 。重要的一点是 $M_1\leq M_2\leq \cdots \leq M_N$ .这是因为当点 $i$ 到点 $i1,i2,\ldots,M_i$ 的距离都在 $1$ 或以下时那么点 $(i1)$ 到点 $i2, i3,\ldots,M_i$ 的距离都在 $1$ 或以下。所以我们可以确定 $M_i$ 的值在 $i1,2,\ldots,N$ 的顺序中从而避免询问距离已知为 $1$ 或更小的线对从而减少问题的数量。具体来说我们从 $L1,R2$ 开始重复下面的操作询问点 $L$ 和点 $R$ 之间的距离是否最多为 $1$ 。在此如果是 $LR$ 则不提问而是进入下一步即点 $L$ 与点 $R$ 之间的距离最多是 $1$ 。如果点 $L$ 与 $R$ 之间的距离最多为 $1$ 则将 $R$ 增加 1并进入下一步。如果得出 $Rgt;N$ 则确定 $M_LM_{L1}\cdotsM_NN$ 并终止程序。如果点 $L$ 与 $R$ 之间的距离大于 $1$ 求出 $M_LR-1$ 并将 $L$ 增加 1。在此根据上述事实注意从新点 $L$ 到点 $L1,\ldots,R-1$ 的距离均为 $1$ 或以下。这里 $L$ 和 $R$ 单调递增或者说总是 $L\leq R$ 。在一次操作中 $LR$ 总是增加 1一旦 $Rgt;N$ 程序就终止因此循环最多迭代 $(2N1)-32N-2$ 次最后做一些简单推理即可。(我们可以证明查询次数最多为 $(2N-3)$ 。完整代码#include bits/stdc.h #define fr1(i,a,b) for(int (i)(a);(i)(b);(i)) #define fr2(i,a,b) for(int (i)(a);(i)(b);(i)--) #define fv(i,p) for(auto (i):(p)) #define ll long long #define ull unsigned ll #define pii pairint,int #define pll pairll,ll #define _1st first #define _2nd second #define elif else if #define debug coutendl-------------------------------------------------------------endl using namespace std; int n,l1,r2,ans; string s; int main(){ ios::sync_with_stdio(false); cin.tie(NULL);cout.tie(NULL); cinn; while(rn){ cout? l rendl; cins; if(sYes){ r; }else{ ans(r-l-1); l; if(lr)r; } } while(ln){ ans(r-l-1); l; } cout! ansendl; return 0; }D - Placing Rooks题目描述有一个网格其中有 $N$ 行和 $N$ 列。起初网格上什么都没有。从这个状态开始高桥依次对网格执行 $M$ 次操作。 $i$ 次操作 $(1\leq i\leq M)$ 如下。移除从上往下第 $R_i$ 行单元格上的所有棋子。接着移除从左边起第 $C_i$ 列单元格上的所有棋子。最后在从上往下第 $R_i$ 行和从左往上第 $C_i$ 列的单元格上放置一个棋子。输出经过 $M$ 次操作后放置在网格上的棋子数量。解题思路核心推论只有后续没有再次清空 \(R_i\) 行、也没有再次清空 \(C_i\) 列时第 i 次放的棋子最后才会保留 只要后面有任意一次操作选中了第 \(R_i\) 行或者第 \(C_i\) 列这个棋子一定会被清除。举例子假设第 i 步放置棋子 \((r,c)\)。如果存在一个操作序号 \(ki\)使得 \(R_kr\)第 k 步一开始就清空第 r 行第 i 步放的棋子消失如果存在一个操作序号 \(ki\)使得 \(C_kc\)第 k 步会清空第 c 列第 i 步棋子消失只有i 是第 r 行最后一次被选中的操作并且 i 也是第 c 列最后一次被选中的操作这枚棋子最后存活。数组解释\(lr[x]\)记录第 x 行最后一次被操作的序号\(lc[y]\)记录第 y 列最后一次被操作的序号。只有 \(lr[R_i]i\) 并且 \(lc[C_i]i\)第 i 次放下的棋子最终留下来。完整代码#includebits/stdc.h #define fr1(i,a,b) for(int (i)(a);(i)(b);(i)) #define fr2(i,a,b) for(int (i)(a);(i)(b);(i)--) #define fv(i,p) for(auto (i):(p)) #define ll long long #define ull unsigned ll #define pii pairint,int #define pll pairll,ll #define _1st first #define _2nd second #define elif else if #define debug coutendl-------------------------------------------------------------endl using namespace std; const int maxn300010; int lr[maxn]; int lc[maxn]; int r[maxn], c[maxn]; int main(){ ios::sync_with_stdio(false); cin.tie(NULL);cout.tie(NULL); int n, m; cinnm; fr1(i,1,m){ cinr[i]c[i]; int rrr[i]; int ccc[i]; lr[rr]i; lc[cc]i; } ll ans0; fr1(i,1,m){ int rrr[i]; int ccc[i]; if(lr[rr]ilc[cc]i){ ans; } } coutans; return 0; }
延伸阅读

更多相关文章

2026/10/24 4:54:51

UE5动画蒙太奇实战:构建状态驱动的角色连招系统

1. 项目概述:从“播放动画”到“创造战斗节奏” 在虚幻引擎5(UE5)里做角色攻击动画,新手和老手之间最大的分水岭,往往不在于动画资源有多精美,而在于如何把一个个独立的攻击动作,串联成一套有节…

2026/10/25 6:08:15

Godot 4 AnimationPlayer进阶:从基础动画到角色灵魂注入的实战指南

1. 项目概述:从“能跑”到“好玩”的鸿沟在游戏开发里,让一个角色动起来,和让一个角色“活”起来,完全是两码事。前者是技术实现,后者是艺术创作。很多刚接触Godot的朋友,尤其是从其他引擎转过来的&#xf…

2026/10/25 6:56:55

生产环境Socket编程落地实战指南(TCP/UDP工程化方案)

文章目录一、先分清生产场景TCP/UDP选型标准1. TCP适用生产业务(追求数据不丢失)2. UDP适用生产业务(追求低延迟,允许少量丢包)二、生产级Socket整体架构分层设计配套架构扩展方案三、TCP Socket生产改造核心规范&…

2026/10/27 15:28:08

C++ Excel处理库选型与实战:Spire.XLS集成、报表生成与性能优化

1. 先把选型想明白:C 里为什么值得引入一个 Excel 处理库前阵子帮一个做设备数据采集的团队看代码,一个 1000 多行的文件里全是拼 xlsx 的逻辑:压缩包怎么组织、sharedStrings.xml 怎么去重、列号 27 怎么换成 AA、日期为什么显示成 45000 这…

2026/10/27 15:28:08

Java智慧酒店管理系统源码拆解:Spring Boot+MyBatis工程实践

简介:Java智慧酒店管理系统源码(zip格式)是一套面向Java开发者的全栈式酒店项目源码包,适合用于课程设计、毕业设计或个人技术提升。系统采用前后端分离架构:后台管理端由Vue实现,App端由UniApp实现&#x…

2026/10/27 15:28:08

IRL-VLA:端到端自动驾驶训练新范式解析

1. IRL-VLA:重新定义端到端自动驾驶训练范式第一次看到IRL-VLA这个名词时,我的自动驾驶研发团队正在为传统模仿学习的性能瓶颈头疼不已。这个将逆强化学习(IRL)与视觉语言动作模型(VLA)结合的框架&#xff…

2026/10/27 15:28:08

Qoder Skill:可感知上下文的AI工程化能力单元

1. 项目概述:这不是教AI写代码,而是给AI配一套“职场生存指南”“教 AI 上班”这个说法乍一听像科幻段子,但拆开来看,它其实精准击中了当前开发者最真实的痛点——我们每天花大量时间在重复性事务上:搭新项目脚手架、配…

2026/10/27 15:28:08

电力系统同步相量计算:FFT、HHT与小波变换实战对比

1. 电力系统同步相量计算的核心挑战在电力系统监测与控制领域,同步相量测量单元(PMU)的精度直接关系到电网状态估计和稳定控制的可靠性。传统基于过零检测的相量计算方法在非理想工况下会产生显著误差,这促使我们探索更先进的信号处理技术。本文将深入剖…

2026/10/27 15:23:06

维普AIGC检测算法解析与论文写作应对策略

1. 论文AIGC检测的现状与挑战最近两年,学术圈最热门的话题莫过于AIGC(人工智能生成内容)对论文写作的影响。作为一名在高校任教多年的教师,我亲眼见证了ChatGPT等工具如何改变了学生的写作方式。去年秋季学期,我在批改…

2026/10/27 14:24:03

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/27 9:34:54

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/27 0:59:21

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/27 0:02:28

WorkBuddy_新建任务与工作模式19_“模式选错”的典型代价

“模式选错”的典型代价 摘要 在软件工程中,设计模式、架构模式、并发模式乃至团队协作模式的选择,往往在项目早期就决定了后续的开发效率和维护成本。本文通过多个真实场景,剖析“模式选错”带来的典型代价——包括返工成本、技术债务累积、…

2026/10/27 0:02:28

WorkBuddy_新建任务与工作模式20_新手推荐路径

新手推荐路径 摘要 在 AI 辅助开发工具快速普及的今天,新手面对最多的困惑往往不是"工具够不够强",而是"我该从哪一步开始用"。本文提出一条经过实践验证的三阶段学习路径:先从 Ask(问答式交互)起…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑