我是刘昱程 2023-03-25 16:07 采纳率: 100%
浏览 9
已结题

这个东西怎么做啊是的

Monocarp正在玩电脑游戏,它杀了n个怪物,每一个怪物都有对应的健康度。

Monocarp的角色有两个咒语,他可以任意多次(可能是零)释放:

精确选择两个活着的怪物,并将其生命值降低1
选择一个怪物并杀死它。
当怪物的生命值为0时,它就会死亡。

为了杀死所有怪物,Monocarp应该执行的最低施法次数是多少?

输入
第一行包含一个整数t(1≤t≤10^4)—测试用例的数量。

每个测试用例的第一行包含一个整数n(1≤n≤100) —怪物的数量。

第二行包含n个整数,h1,h2,,,(1≤hi≤100) —每个怪物的健康。

输出
对于每个测试用例,打印一个整数——为了杀死所有怪物,Monocap应该执行的最小法术施放次数。

输入数据 1
3
4
1 2 1 2
3
2 4 2
5
1 2 3 4 5

输出数据 1
3
3
5

  • 写回答

1条回答 默认 最新

  • IT_service_mesh 2023-03-25 16:24
    关注

    参考GPT和自己的思路:这是一个贪心算法的问题。首先,如果有两个怪物生命值相等,最优的选择是将它们两个都杀掉,因为这样可以省去一次操作。如果有三个怪物生命值相等,最优的选择是将其中两个杀掉,然后再将剩余的两个杀掉,因为先杀掉其中一个再杀掉两个显然不是最优的选择。所以我们可以先将怪物按生命值从小到大排序,然后每次选择两个生命值最小的怪物进行操作,直到只剩下一个或没有怪物可以操作。这样的算法时间复杂度为$O(n\log n)$。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月4日
  • 已采纳回答 3月27日
  • 创建了问题 3月25日

悬赏问题

  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 AT89C51控制8位八段数码管显示时钟。
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测