Codeforces Round #840 (Div. 2) and Enigma 2022 - Cybros LNMIIT(A~C)

A. Absolute Maximization

给出一个数组,每次可以选择两个数,交换两个数二进制表示的同一位,问经过若干次操作后,得到的数组中最大值减最小值的差最大是多少。

思路:统计所有数二进制每一位的情况,贪心分配最大值和最小值即可。

AC Code:

B. Incinerate

给出n个怪物的生命值h数组和攻击力p数组,给出这个人的攻击力k,每次攻击都会对所有的怪物有k的伤害,同时k会减少存活怪物中攻击力最少的那个值,问经过若干次攻击之后能否杀死全部怪物。

思路:模拟即可。

AC Code:

os:一开始wa了一发,因为减的时候没考虑下一个不一定存活。

C. Another Array Problem

给出一个数组a,每次可以选择任意连续一段,将这一段中的所有数换成边界两数差的绝对值,问经过若干次操作后,数组和的最大值是多少。

思路:我们可以将相邻的两个数变为0,两次操作即可达到。考虑极端情况,我们是可以将数组中所有数变为数组中最大的数,这样无非是最优的情况。但是对于n==3的情况,若是最大值在边界,那可以将数组中所有的数变为最大值,否则只能枚举所有的可能性;n==2时,枚举结果即可。

AC Code:

os:这个题rating2000?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值