【C++】问题 I: 许攸说

文章提供了一个关于编程的问题,涉及数组操作和算法设计。许攸帮助曹操制定战略,通过给骑兵团分配任务来夜袭乌巢。给定每个骑兵团的耐力值,目标是找到让两边骑兵团数量相等的策略。文章中给出了两个不同的C++代码实现,第一个使用了两个额外的数组,第二个简化版直接通过排序后的原数组计算。优化后的代码通过了所有测试用例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

许攸总是说:“吾有良略在怀,必为阿瞒所需

阿瞒有我良计,取冀州便是易如反掌

吾才满腹,袁本初竟不从之

阿瞒有我良计,取冀州便是易如反掌

吾才满腹,袁本初竟不从之

阿瞒有我良计,取冀州便是易如反掌

吾才满腹,袁本初竟不从之

成略在胸,良计速出

吾才满腹,袁本初竟不从之

阿瞒有我良计,取冀州便是易如反掌

吾才满腹,袁本初竟不从之

阿瞒有我良计,取冀州便是易如反掌

吾才满腹,袁本初竟不从之

阿瞒有我良计,取冀州便是易如反掌

吾有良略在怀,必为阿瞒所需

阿瞒有我良计,取冀州便是易如反掌

吾才满腹,袁本初竟不从之

阿瞒有我良计,取冀州便是易如反掌

吾才满腹,袁本初竟不从之

阿瞒有我良计,取冀州便是易如反掌

吾才满腹,袁本初竟不从之

成略在胸,良计速出

吾才满腹,袁本初竟不从之

阿瞒有我良计,取冀州便是易如反掌

吾才满腹,袁本初竟不从之

阿瞒有我良计,取冀州便是易如反掌

吾才满腹,袁本初竟不从之

阿瞒有我良计,取冀州便是易如反掌

阿瞒,没有我,你得不到冀州啊!!!”

现在我们知道了,许攸就是个废话大王。

不过现在让我们来看看他是怎么帮曹操夜袭乌巢的。曹操有n个骑兵团,每一个骑兵团的耐力为d,许攸对曹操说,需要找到一个值k,耐力小于k的去乌巢东边偷袭,耐力值大于等于k的去西边偷袭,聪明的你知道有多少种取值k能让去偷袭东边的骑兵团数量和去偷袭西边的骑兵团数量相等吗?

2<=n<=1e5

1<=di<=1e5

输入全为整数

输入

n

d1 d2 d3.. dn

输出

多少种选择

样例输入
6
9 1 4 4 6 7
样例输出
2

一个错误答案和蹩脚算法如上;

处理本题我首先想出了一个粗略的框架。采用的是从小到大排序再对半分的思路,奇数n直接输出0,偶数再分了两个数组取东边组最末尾元素和西边组第一个元素的思路。

但是就算这样能过几个测试用例,输出还是错的。

而且有必要分东西两个数组吗?根本没必要!直接在数组里找d[n/2]和d[n/2-1]相减就可以了。

简化和优化如下,能够通过:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

城主_全栈开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值