每日一题之 hiho1745 最大顺子

本文探讨了一道数学题目,涉及利用N张特定整数卡片和M张百搭卡片组合成最大顺子的问题。通过排序和枚举方法,找出能形成最大连续整数序列的方案,输出该顺子的最大值。样例输入和输出展示了具体计算过程,思路清晰。

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

你有N张卡片,每张卡片上写着一个正整数Ai,并且N张卡片上的整数各不相同。

此外,你还有M张百搭卡片,可以当作写着任意正整数的卡片。

一个“顺子”包含K张卡片,并且满足卡片上的整数恰好是连续的K个正整数。我们将其中最大的整数称作顺子的值。

例如1-2-3-4-5的值是5,101-102-103的值是103。

请你计算用给定的N张卡片和M张百搭卡片,能凑出的值最大的顺子是多少,并且输出该顺子的值。

输入
第一行包含3个整数,N,M和K。

第二行包含N个整数,A1, A2, … AN。

对于50%的数据,1 ≤ N, K ≤ 1000

对于100%的数据,1 ≤ N, K ≤ 100000 0 ≤ M < K

输出
一个整数代表答案

样例输入
10 1 5
1 4 2 8 5 7 10 11 13 3
样例输出
11

思路:

暴力,先对数组排序然后从后往前枚举第i个位置和第 i-(k-m)位置所包括的的牌数以及实际的牌数,假设这两个位置的数是 x,y(x > y)。分别对应的下标是posx,posy。那么x到y所需要的牌数是x-y+1记为num1,而实际这一段的牌的数量是 posx-pos_y+1记为num2。然后将num1 - num2 与 m 做比较。之后小于 m 才满足条件,第一个满足条件的就是结果。结果为 res = A[i] + m - (num1 - num2)。否则继续遍历。

#include <cstdio>
#include <cstring>
#include <iostream>
<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值