您的位置:首页 > 财经 > 金融 > 【例题】lanqiao3236 小蓝的零花钱

【例题】lanqiao3236 小蓝的零花钱

2024/11/18 13:28:23 来源:https://blog.csdn.net/m0_73676887/article/details/142308854  浏览:    关键词:【例题】lanqiao3236 小蓝的零花钱

在这里插入图片描述
样例输入

6 3
1 2 3 4 5 6

样例输出

2

解题思路

  • 在序列中选取一个位置将序列分成两段,要求每一段中偶数和奇数的数
  • 量都相等尽可能多地进行这个操作,但每次操作都需要花费代价
  • 切割需要花费的代价为切割两端的元素的差的绝对值
  • 在他的预算范围内,最多能进行多少次操作。

通过计算每一种可能的切割的消耗,并把它们列表,按照升序排列,然后用零花钱总数去减,使能减更多次。

代码

n,B=map(int,input().split())
a=list(map(int,input().split()))
#记录奇数和偶数的数量差
cnt = 0
#记录相邻两个数之差的绝对值
cost = []
#求出序列里奇数个数=偶数的所有可能切法并求消耗
for i in range(0,n-1):if a[i] % 2 ==0:cnt += 1else:cnt -= 1# 保证序列里奇数个数=偶数if cnt == 0:cost.append(abs(a[i]-a[i+1]))
#把差的绝对值排序,让B从小减到大以求最多操作次数
cost.sort()
res = 0
for i in cost:
#B从小减到大,减到余额不足时跳出          if B >= i:res +=  1B -= ielse:breakprint(res)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com