Codeforces 55 题目分析
本文将对 Codeforces 55 (Beta Round 51) 进行分析。
A
题目描述:
一个虫子位于绕城一圈的
片树叶中的一片上,在第 分钟,虫子会跳过 片树叶并在脚下的树叶上做一个记号。你的任务是判断该虫子是否将 片树叶都做了记号。
解题思路:
直接模拟即可。
代码:
#include <bits/stdc++.h> using namespace std; int n, cnt = 0; bool vis[1010]; const int inf = 1000000; int main() { cin >> n; int pos = 0; for (int i = 1; i <= inf; i++) { if (!vis[pos]) cnt++; vis[pos] = 1; pos = (pos + i - 1) % n; } puts((cnt == n) ? "YES" : "NO"); return 0; }
B
题目描述:
现有
个整数(均小于等于 ),并给出三个运算符(均为 +
或*
)。要求每次取出不一定相邻的两个数,并依次使用给出的运算符对这两个数进行运算,并将结果当做一个新数如此操作,直到只剩下一个数为止。 编程求出最后剩下数的最小值。
解题思路:
暴搜求最小值。复杂度能过。
代码略。
C
题目描述:
Volodya 和 Vlad 在下一盘棋,在棋盘的
( ) 格中有 ( ) 个棋子。
每轮 Volodya 将一个棋子移动到相邻的单元格中。如果棋子位于棋盘边界,Volodya 可以将其移出棋盘并获胜。在Volodya 移动之后,Vlad 会在棋盘边界上放上长度为的挡板(图中黑线),这样下一轮中 Volodya 就不能再通过这条边线将棋子移到棋盘外了。
问:Volodya 会赢得这盘棋吗?我们假设两位棋手都采用了最优策略。
解题思路:
注意到,如果棋子在边上,则需要将挡板放在靠近边缘的位置。
此时,棋子可以侧向移动,挡边也可以一直挡。直到棋子到达角落。此时由于存在两条相邻的边,所以不管堵那条,棋子都能从另一条出去。于是考虑在棋子移动到边缘的过程中,先将四个角堵上。
即得:判断棋子到边缘的距离。大于
代码略。
D
题目描述:
Volodya 认为一个数字 x 是美丽的,当且仅当对于 x 的每一个非零位上的数 y,都有
。
你需要帮助他算出在区间中有多少个数是美丽的。
解题思路:一眼数位 DP。然后就不会做了。
由于数字除以 lcm 不改变整除特性,因此将所有数字整除 lcm(
然后考虑离散化质因数防止 MLE。记得开 long long。
以上纯口胡。
E
题目描述:
给定一个凸多边形和一些点,问你这些点被多少个三角形所包含。
解题思路:
用总数减去不包含的数量。同一平面内任选三个点的方案数为
也是纯口胡。
本文来自博客园,作者:cwkapn,转载请注明原文链接:https://www.cnblogs.com/chenaknoip/p/18561968
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)