【AtCoder Beginner Contest 181】题解
题目颜色大致代表洛谷题目难度,点击各题标题可以跳转到原题。
A - Heavy Rotation
简化题意:给出正整数 ,如果 是奇数输出 Black,否则输出 White,。
题解:这题还要题解?
代码:https://atcoder.jp/contests/abc181/submissions/17780998
B - Trapezoid Sum
简化题意:
- 有 次操作,每次将答案加上一个首项为 ,末项为 且公差为 1 的等差数列,求最终的答案。
- ,。
题解:
- 每个等差数列项数为 ,根据已知数据套公式求和即可。
- 注意开 long long。
- 另外,使用差分算法也可以通过此题。
代码:https://atcoder.jp/contests/abc181/submissions/17784855
C - Collinearity
简化题意:
- 有 个点,第 个点坐标为 ,判断是否存在三点共线。
- ,,任意两点坐标均不相同。
题解:
- 枚举任意三个点,先求出过前两点的直线的解析式,然后判断第三个点是否在这条直线上即可。
- 注意当前两个点横坐标相等时不存在斜率,因此要特殊判断(即判断三点横坐标是否均相等即可)。
- 计算过程可能会有误差,所以判相等时最好要给一段可以接受的判为正确的区间。
代码:https://atcoder.jp/contests/abc181/submissions/17794029
D - Hachi
简化题意:
- 给一个长度为 的数字,判断这个数字在任意交换数位后是否存在一个可以被 整除的数。
- ,每位数字均在 之间。
题解:
- 这题我一开始看错题,以为原数最大就是 ,于是罚时+5min。
- 当然解法也不难,只要先确定这个数中是否存在 这些数位。
- 一个很简单的结论:判断一个数是否是 8 的倍数,只需要判断它对 取模的值是否是 的倍数。
- 然后,枚举任选存在的 3 个数位,判断这 3 个数位能不能组成 的倍数即可。
- 当然对于一位数和两位数要特判,因为自身无法构成三位数。
代码:https://atcoder.jp/contests/abc181/submissions/17800766
E - Transformable Teacher
简化题意:
- 有 ( 为奇数) 个小朋友和 个老师,每个人都有自己的权值。
- 现在要选出 1 位老师给小朋友们上课,并将小朋友们两两分组。
- 请选出一个选老师和分组的方案,使得所有组两人权值之差的绝对值之和最小。
题解:
- 首先有如下常识:
- 选出的老师一定和一个小朋友分成一组。
- 若将 ( 是偶数)个人分组,那么将每人权值排序,让第 1 个与第 2 个组队,第 3 个与第 4 个组队,以此类推的方案答案一定最小。
- 对于每个方案中要与老师分配方案的小朋友,分到的老师一定是权值距离它最近的。
- 知道了这些,就可以开始规划做法:
- 将每个老师、每个小朋友权值排序;
- 建立一个特殊的前后缀和,记录每两个人权值差的 前/后 缀和;
- 枚举每个小朋友与老师分组的情况,二分求出最适合该方案的老师;
- 对于其余分组利用前后缀和方法直接得出答案
- 特别地,若当前枚举到的小朋友权值从小到大是偶数,代表它前面和它后面的同学都未被分组,因此将这两个人在组成一组并记录答案。
- 找到答案最小的一种情况,输出即可。
- 时间复杂度 。
- 比赛的时候把二分搞成 为长度的了,罚时+10min。
代码:https://atcoder.jp/contests/abc181/submissions/17810832
F - Silver Woods
简化题意:
- 平面上有 个点,现在你有一个半径待定的圆,且初始时圆心位于 。
- 你需要最大化圆的半径,且满足这个圆能穿通过移动,直到圆心到达 。
- 在移动的过程中圆不能与直线 或直线 相交,且任何时候这 个点都不在圆内。
- ,。
题解:
- 考场上没有想到,太可惜了。
- 首先,我们可以二分圆的半径 。
- 我们把整个点阵看成一个图,如果两点间距离小于 那么这个圆就不能从它们之间通过。
- 然后枚举点与上下边界的关系,如果距离小于 一样不能通过。
- 如果整个并查集处理完毕后,若以直线 ,直线 在并查集代表的点中无法互相通过,那么说明存在一条合法通过路径。
- 此做法时间复杂度为 。
标签:
题解
, AtCoder 题目解析
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话