一、训练赛
- B - Codeforces 1216 A. Prefixes(AC)
题意:
给一个字符串(只包含字符 ‘a’, ‘b’),要求a 和 b 相邻,问最少改变多少次,病输出改变后的字符串
思路实现:
看完题就能出思路,直接暴力模拟,没啥好说的 - C - CodeForces 1216 B.Shooting(AC)
题意:
给定n个罐子,第i个罐子a[i]需要射击 (a[i]*x+1) 次,问击倒n个罐子最少需要射击多少次,并输出序号
思路实现:
很容易想到简单贪心,先射击a[i]值大的数,用结构体封装一下序号和数值,然后直接排序,遍历输出就ok了 - D - CodeForces 1216 C.White Sheet
题意:
给你两个黑色矩形和一个白色矩形的左下和右上角的坐标,问你白色矩形是否能够完全被黑色矩形覆盖
思路实现:
做的非常麻烦,找出所有覆盖的情况,一共有6种,其他的就都是“YES”
> b覆盖a
> c覆盖a
> b c 上下覆盖a
> c b上下覆盖a
> c b左右覆盖a
> b c右左覆盖a
然后其他的就都是“YES”
-
A - CodeForces 1216 D. Swords(AC)
题意:
房子里有n种剑,每种都有x把, y 个人来到剧院拿了相同数目的剑(每个人只能拿一种剑),其中有1种剑没有被拿过,然后给出每种剑剩余的数量,求最少有多少个人,拿了多少把剑
思路实现:
直接可以看出 x 等于剩余剑数最多的那种剑,因为每个人拿的剑相同,所以直接找每种剑被拿走的数目的最大公约数,这样就能保证人数最少。 -
E - CodeForces 1221 A.2048 Game(AC)
题意:
给n个数(每个数都是2的次幂),相同的两个数可以合成一个数(两个 4 可以合成 一个 8),问最终是否会出现 2048或者原数组里面有木有2048。
思路实现:
确保小于2048的数字相加后能大于等于2048就行. -
G - CodeForces 1221 B.Knights
题意:
骑士能攻击到8个方向不同颜色的骑士(有特定的攻击距离)。有W,B两种颜色的骑士,怎样安排骑士的位置使得互相攻击的骑士数目最多。
思路:
这种肯定是画图看,画图我们就会发现,一行BWBW,一行WBWB,这样是最优的,在特定的攻击距离下都是不同颜色的。 -
F - CodeForces 1221 C.Perfect Team(AC)
题意:
有三种队员,分别擅长写代码、数学和其他。三个人组队,若一个队中至少有一个擅长写代码的人和一个擅长数学的人,则这个队伍是Perfect Team。已知三种队员的个数,求最多能组成多少个Perfect Team。
思路实现:
很好想,先求出三个人一队最多能组成多少个队。
若队伍数量比min(擅长写代码的人数,擅长数学的人数)大,则Perfect Team的数量就是min(擅长写代码的人数,擅长数学的人数);
若队伍数量比min(擅长写代码的人数,擅长数学的人数)小,则Perfect Team的数量就是最多能组成的队伍数量。 -
H - CodeForces 1221 D.Make The Fence Great Again
题意:
给出n块木板和每一块木板长度+1所需要的钱,每块木板可以无限加长,让相邻两块木板不同长度需要最少的钱是多少。
思路:
dp,先枚举上一块木板+0+1+2的情况,然后再枚举现在这一块+0+1+2的情况,进行dp,如果长度相同则跳过。
二、总结
今天的比赛比较友好,都是ABCD题,做起来蛮舒服的,就是有个题目做的很啰嗦,花的时间太久了,比赛完了之后才出的题。还是应该加强思维,尽量用简单的方法去解决问题。