杀小怪 (C++)

题目描述

莫妮卡正在玩一款电脑游戏,这个游戏中一共有n只小怪,每个怪物都有一个生命值,当生命值为0的时候,这个怪物就被杀死了。

莫妮卡每次可以执行两种操作中的一种:

1.选择两个怪物,扣掉他们一点血

2.直接将一个怪物生命值归零

现在莫妮卡希望用最少的次数杀掉所有的怪物,求这个操作次数是多少?


输入格式

第一行输入一个整数n (n<=10000)

第二行输入n个数字,代表n个怪物的生命值

输出格式

一个整数,代表最少操作次数


输入样例

4

1 2 1 2

输出样例

3


限制

时间限制:1000ms

内存限制:65536KB


说明/提示

每个数字不超过int类型


分析:

这题我们有两个策略

1.全部清除

2.一次减一点

那怎么样才能将其利益最大化?

以样例为例  1 2 1 2 ,1和1用第一种方案击败了,剩下的2和2可以用两次第一个方案,或各自用第二个方案,都只需要三次,那么我们可以总结出来经验,如果数字是1,统计1的个数,如果个数是偶数,答案加上数量/2的商,如果是奇数,答案加上数量/2+1。如果数字>=2,直接消除,答案+1。

代码不就出来了。


代码:

#include <bits/stdc++.h>
using namespace std;
int main()
{	
	int n,x,num;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>x;
		if(x==1) num++;
	}
	cout<<(num+1)/2+(n-num);
    return 0;
}

如果有不懂得可以在评论区讨论!! 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,根据MMORPG游戏副本小怪和boss,我为您列举了二十条测试用例,具体如下: 1. 测试小怪和boss的模型、贴图、动画等素材是否正常展示,是否存在异常情况,如缺失、错位等。 2. 测试小怪和boss的属性是否正确,如血量、攻击力、防御力等,是否符合游戏设计的要求。 3. 测试小怪和boss的 AI 是否正常,包括攻击、移动、逃跑等行为是否符合游戏设计的要求。 4. 测试小怪和boss的技能是否正常,包括技能效果、范围、冷却间等是否符合游戏设计的要求。 5. 测试小怪和boss的掉落物品是否正确,包括数量、稀有度、属性等是否符合游戏设计的要求。 6. 测试小怪和boss的刷新间是否正常,包括刷新频率、位置、数量等是否符合游戏设计的要求。 7. 测试小怪和boss的攻击方式是否正常,包括远程攻击、近战攻击等是否符合游戏设计的要求。 8. 测试小怪和boss的 AI 是否容易被家误导,比如是否会被家的技能或策略所影响。 9. 测试小怪和boss的 AI 是否能够适应不同等级的家,对于低等级和高等级的家是否存在不同的反应。 10. 测试小怪和boss的攻击方式是否容易造成卡顿、掉线等问题,尤其是在高并发情况下。 11. 测试小怪和boss的掉落物品是否容易出现异常,比如掉落稀有度高的物品却不符合游戏设计的要求。 12. 测试小怪和boss的掉落物品对游戏平衡性的影响,比如是否会导致游戏的通关过程过于简单或困难。 13. 测试小怪和boss的掉落物品对游戏经济的影响,比如是否会导致游戏内货币通胀或物品价格波动。 14. 测试小怪和boss的攻击方式是否容易造成游戏内部分家的不满和投诉,例如攻击过于频繁或太强。 15. 测试小怪和boss的 AI 是否容易被家利用,例如是否存在攻击后退、跳跃等方式来规避攻击。 16. 测试小怪和boss的属性和技能是否容易被家通过外挂等方式修改,从而达到不正当的游戏目的。 17. 测试小怪和boss的 AI 是否容易被家利用缺陷,例如是否存在固定攻击模式、追击方式等缺陷。 18. 测试小怪和boss的攻击方式是否容易导致家意外死亡,例如攻击范围过大、攻击方式过于难以躲避等。 19. 测试小怪和boss的掉落物品是否容易导致家不满,例如掉落率过低、掉落物品过于平凡等。 20. 测试小怪和boss的攻击方式是否容易导致游戏内部分家的过度依赖,例如某个特定的攻击方式过于强大。 希望这些测试用例能够对您有所帮助,如果您有其他问题或需要其他的测试用例,可以继续向我提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值