最新消息:680元/半年,推荐全网最具性价比的一站式编程学习平台码丁实验室

信息学奥赛题库- 扑克牌

C++ 少儿编程 1363浏览 0评论

友情提示:680元/半年,儿童学编程,就上码丁实验室

【题目描述】

一副扑克牌有$n$张牌。一般你买的一副新扑克牌里除了这$n$张牌外还会有一些张特殊的牌,如果你不小心弄丢了$n$张牌中的某一张,就可以用特殊牌来代替,但是如果你弄丢两张的话就没有办法了,因为特殊牌上的图案是一样的。

现在你得到了很多扑克牌,准确来说,$n$种牌你各有$a_1,a_2,…,a_n$张,同时你还有b张特殊牌,现在你需要从这些牌中整理出若干副牌供大家使用。整理出的一副牌可以由$n$种普通牌各一张组成,也可以由$n-1$种普通牌各一张再加一张特殊牌组成。

请你设计出一种方案,整理出尽可能多的牌。

【输入】

第一行给出$n$和$b$。

第二行给出$a_1,a_2,…,a_n$。

【输出】

输出最多能整理出的牌的副数。

【输入样例】

5 5
5 5 5 5 5

【输出样例】

6

【提示】

【数据规模及约定】

对于20%的数据,$1≤n≤100$,牌的数量小于$100$。

对于40%的数据,$1≤n≤3000$。

对于100%的数据,$1≤n≤1000000$,牌的数量≤$10^6$。

您必须 登录 才能发表评论!