Codeforces 1450 题目研讨
本文将会对 Codeforces 1450 A-H 进行探讨。
题目链接
题目分析
A
难度:入门
算法标签:字符串
题目描述:对给定的字符串内字符的顺序进行调换,使 trygub
不是该字符串的子串。
解题思路:
本题有多种思路。下面介绍其中两种。
- 将字符串内所有
b
字符移到字符串开头 - 对字符串进行排序
容易证明这两种方法都是正确的。
B
难度:普及−
算法标签:贪心(?)
题目描述:平面上有
解题思路:答案必然
用反证法。假设存在一种情况使得最优解为
- 若第
次操作选择点 A,则情况不会有任何变化(因为前一次操作已经清空了 A 周围的点),与“最优解为 ”矛盾; - 若第
次操作不选择点 A,则点 A 一定不会被删除,因为其他点到 A 的距离一定大于 ,不满足结束条件,矛盾。
综上所述,不存在情况使得最优解为 且 。因此 。
判断即可。
C1 + C2
难度:普及+/提高 - 提高+/省选−
算法标签:构造、数学
题目描述:
有一个
行 列的井字棋棋盘,棋盘中的每一个格子要么是空的,要么包含一个棋子。 这里有两种棋子分别为 X 和 O 。如果有三个同种类的棋子连续横着或竖着排列,则称这是获胜局。(注意:斜着不算) 如果棋盘中没有这样的连续三个同种类的排列,则称这是一个平局。
在一次操作中,你可以将某一枚棋子替换为另一颗棋子。令为初始棋盘中棋子的总数,你可以做最多 次上述操作使得最后的局面为平局。注意:你不需要最小化操作次数。
C1 与 C2 的不同在于 C2 的初始棋局中含有两种棋子,而 C1 只有一种。
解题思路:
注意到斜线不算三连,因此考虑构造斜线。
将格子分为三种,第
D
难度:普及+/提高
题目描述:
给定长度为
给定
解题思路:
不难发现对于
对于
对于
另外注意到:当
因此有分类讨论:对于
E
难度:省选/NOI−(个人感觉评高了)
算法标签:差分约束、图论
题目描述:
整个社会可以用一张由
个顶点和 条边组成的无向联通图来表示。顶点代表人,一条边 代表人 和 之间的友谊。
在社会上,第个人有收入 。一个人 羡慕一个人 ,等价于 比 多出1个单位的收入,也就是 。
如果对于每一对朋友,都有一个人羡慕另一个人,这个社会就叫资本主义社会。对于一些朋友关系,你知道哪个人在羡慕另一个人。对于其余的朋友关系,你不知道谁羡慕谁。
社会收入不等值的定义是:,也就是社会中收入最多的人的收入与收入最少的人的收入之差。
你只知道一些朋友关系,不知道每个人的收入。对于一部分朋友关系,你知道谁羡慕谁;对于另外一部分,你不知道。你要判断这个社会是否可能成为资本主义社会。如果是,你要构造一个满足所有条件,且这是个资本主义社会。要求你给出的 让社会收入不等值最大。
解题思路:
不难发现当图中有奇环时无解。而当图中没有奇环时可以转换为差分约束。此时可以跑 Floyd 然后找到极差最大的那一组解。所以直接做就做完了。
F
难度:省选/NOI−
本文来自博客园,作者:cwkapn,转载请注明原文链接:https://www.cnblogs.com/chenaknoip/p/18541009
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律