训练日记7.23

一、训练赛

  1. B - Codeforces 1216 A. Prefixes(AC)
    题意:
    给一个字符串(只包含字符 ‘a’, ‘b’),要求a 和 b 相邻,问最少改变多少次,病输出改变后的字符串
    思路实现:
    看完题就能出思路,直接暴力模拟,没啥好说的
  2. C - CodeForces 1216 B.Shooting(AC)
    题意:
    给定n个罐子,第i个罐子a[i]需要射击 (a[i]*x+1) 次,问击倒n个罐子最少需要射击多少次,并输出序号
    思路实现:
    很容易想到简单贪心,先射击a[i]值大的数,用结构体封装一下序号和数值,然后直接排序,遍历输出就ok了
  3. 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”

  1. A - CodeForces 1216 D. Swords(AC)
    题意:
    房子里有n种剑,每种都有x把, y 个人来到剧院拿了相同数目的剑(每个人只能拿一种剑),其中有1种剑没有被拿过,然后给出每种剑剩余的数量,求最少有多少个人,拿了多少把剑
    思路实现:
    直接可以看出 x 等于剩余剑数最多的那种剑,因为每个人拿的剑相同,所以直接找每种剑被拿走的数目的最大公约数,这样就能保证人数最少。

  2. E - CodeForces 1221 A.2048 Game(AC)
    题意:
    给n个数(每个数都是2的次幂),相同的两个数可以合成一个数(两个 4 可以合成 一个 8),问最终是否会出现 2048或者原数组里面有木有2048。
    思路实现:
    确保小于2048的数字相加后能大于等于2048就行.

  3. G - CodeForces 1221 B.Knights
    题意:
    骑士能攻击到8个方向不同颜色的骑士(有特定的攻击距离)。有W,B两种颜色的骑士,怎样安排骑士的位置使得互相攻击的骑士数目最多。
    思路:
    这种肯定是画图看,画图我们就会发现,一行BWBW,一行WBWB,这样是最优的,在特定的攻击距离下都是不同颜色的。

  4. F - CodeForces 1221 C.Perfect Team(AC)
    题意:
    有三种队员,分别擅长写代码、数学和其他。三个人组队,若一个队中至少有一个擅长写代码的人和一个擅长数学的人,则这个队伍是Perfect Team。已知三种队员的个数,求最多能组成多少个Perfect Team。
    思路实现:
    很好想,先求出三个人一队最多能组成多少个队。
    若队伍数量比min(擅长写代码的人数,擅长数学的人数)大,则Perfect Team的数量就是min(擅长写代码的人数,擅长数学的人数);
    若队伍数量比min(擅长写代码的人数,擅长数学的人数)小,则Perfect Team的数量就是最多能组成的队伍数量。

  5. H - CodeForces 1221 D.Make The Fence Great Again
    题意:
    给出n块木板和每一块木板长度+1所需要的钱,每块木板可以无限加长,让相邻两块木板不同长度需要最少的钱是多少。
    思路:
    dp,先枚举上一块木板+0+1+2的情况,然后再枚举现在这一块+0+1+2的情况,进行dp,如果长度相同则跳过。

二、总结

今天的比赛比较友好,都是ABCD题,做起来蛮舒服的,就是有个题目做的很啰嗦,花的时间太久了,比赛完了之后才出的题。还是应该加强思维,尽量用简单的方法去解决问题。

你可能感兴趣的:(阶段总结)