链接:https://ac.nowcoder.com/acm/contest/51958/E 来源:牛客网 Tokitsukaze 要在一个 � × � n×n 的棋盘上摆放棋子。她有 � a 个红色的棋子和 � b 个蓝色的棋子,要求任意两个相同颜色的棋子上下左右四个方向不相邻,允许棋盘上留有不放棋子的空格子。 Tokitsukaze 想知道棋盘的边长 � n 至少多大,才能摆放下 � a 个红色的棋子和 � b 个蓝色的棋子。
时间: 2023-04-05 18:04:03 浏览: 158
我可以回答这个问题。根据题意,每个相同颜色的棋子上下左右四个方向不相邻,因此每个棋子占据的格子至少是 $5\times 5$ 的。而每个格子最多只能放一个棋子,因此需要的格子数为 $a+b$。因此,棋盘的边长至少为 $\sqrt{a+b}$。
相关问题
链接:https://ac.nowcoder.com/acm/contest/59840/K 来源:牛客网 给定 � n 个坐标,求其中 3 3 个坐标能表示一个等腰三角形的组数。 三点共线不算三角形,等边三角形为特殊的等腰三角形。
这道题可以用哈希表来解决。首先枚举三角形的顶点,然后计算出这个顶点到其它点的距离,并将距离存入哈希表中。接着枚举其它点作为三角形的另一个顶点,计算出这个点到剩下的点的距离,并在哈希表中查找是否存在与之前顶点距离相等的点,如果存在,则说明这三个点可以组成等腰三角形。
具体实现可以使用 STL 中的 unordered_map 来实现哈希表。时间复杂度为 O(n^2)。
以下是代码实现:
链接:https://ac.nowcoder.com/acm/contest/59840/K 来源:牛客网 给定 � n 个坐标,求其中 3 3 个坐标能表示一个等腰三角形的组数。 三点共线不算三角形,等边三角形为特殊的等腰三角形。
这道题可以通过枚举任意三个点,判断它们能否组成等腰三角形来解决。具体方法是,计算其中两个点的距离,然后枚举第三个点,判断其与这两个点的距离是否相等。如果相等,则找到了一个等腰三角形。
需要注意的是,同一个等腰三角形可能会被多次计算,因此需要使用一些方法来避免重复计算。一种常用的方法是,对所有点按照横坐标排序,然后枚举每个点作为等腰三角形的中点,再枚举与该点横坐标相差不超过距离的点作为另外一个顶点,这样可以避免重复。
时间复杂度为 O(n^2 log n),可以通过本题。
阅读全文