CodeCraft-19 and Codeforces Round #537 (Div. 2) A, B, C
A. Superhero Transformation
题目链接
题面:
划掉
题意:
见题面
思路:
将元音字母转换为*,辅音字母转换为+,判断最后两个字符串是否相同即可。
AC代码:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
B. Average Superhero Gang Power
题目链接
题面:
划掉
题意:
有 n n n个英雄,每个人拥有 a 1 , a 2 , . . . , a n a_1, a_2, ... , a_n a1,a2,...,an的能量,让你进行m次操作:
- 去掉某个英雄
- 给某个英雄能量加 1 1 1
注意每个英雄最多加 k k k次能量
问按上述操作,最后英雄的平均能量的最大值。
思路:
贪心。
从前往后,考虑首先去掉 i i i个英雄,剩下能加上的能量为 m i n ( m − i , ( n − i ) ∗ k ) min(m-i,(n-i)*k) min(m−i,(n−i)∗k)。
O ( n ) O(n) O(n)扫一遍即可。
AC代码:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
C. Creative Snap
题目链接
题面:
划掉
题意:
有一排敌人的基地,长度为 1 < < n 1<<n 1<<n,还有k个敌人,每个敌人仅且仅在一个基地。
现在让你来消灭这些基地,每次你能进行的有两种操作:
- 将你要消灭的基地对半分(保证长度 ≥ 2 \geq 2 ≥2)
- 消灭一段基地,如果没有敌人,则消耗 A A A能量,否则消耗 B ∗ 敌 人 数 量 ∗ 基 地 长 度 B*敌人数量*基地长度 B∗敌人数量∗基地长度能量。
问你消灭这排基地所需最小能量。
思路:
DFS
每次要消灭 l 到 r l到r l到r这段基地时,
首先使用二分前缀和求出基地敌人数量,
- 如果为0,那么消灭这排基地所需最小能量为 A A A
- 否则,求出当前消灭这排基地所需能量值,与 d f s ( l , m i d ) + d f s ( m i d + 1 , r ) dfs(l,mid)+dfs(mid+1,r) dfs(l,mid)+dfs(mid+1,r)取最小值
注意当敌人数量为0时,直接返回
AC代码:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include