撲克牌(二分)

2021-10-06 15:54:40 字數 896 閱讀 9663

題目描述

你有n種牌,第i種牌的數目為ci。另外有一種特殊的牌:joker,它的數目是m。你可以用每種牌各一張來組成一套牌,也可以用一張joker和除了某一種牌以外的其他牌各一張組成1套牌。比如,當n=3時,一共有4種合法的套牌:, , , 。 給出n, m和ci,你的任務是組成盡量多的套牌。每張牌最多只能用在一副套牌裡(可以有牌不使用)。

輸入描述:

第一行包含兩個整數n, m,即牌的種數和joker的個數。

第二行包含n個整數ci,即每種牌的張數。

輸出描述:

輸出僅乙個整數,即最多組成的套牌數目。

示例1輸入

複製3 4

1 2 3

輸出複製3說明

樣例解釋

輸入資料表明:一共有1個1,2個2,3個3,4個joker。最多可以組成三副套牌:, , ,joker還剩乙個,其餘牌全部用完。

備註:資料範圍

50%的資料滿足:2 < = n < = 5, 0 < = m < = 10^ 6, 0< = ci < = 200

100%的資料滿足:2< = n < = 50, 0 < = m, ci <= 500,000,000。

題意:略。

題記:二分套牌的數目即可。

#include

using namespace std;

typedef

long

long ll;

const

int n=55;

int a[n]

;int n,m;

ll check

(int x)

return sum;

}int

main()

cout

}

BZOJ 1816 撲克牌 二分

由於答案具有單調性,考慮二分答案並驗證。如果能湊齊x堆,因為每個joke在乙個牌堆裡最多只能用一次,則至多只能用min x,m 個joke.對於每個牌,如果這個牌的總數小於x,用joke補齊剩下的,如果能補齊那麼一定能組成x堆。簡單證明 補齊完後的牌堆裡每用joke乙個,一定能在其他牌裡面湊齊n 1...

程式設計習題之撲克牌二分

你有n種牌,第i種牌的數目為ci。另外有一種特殊的牌 joker,它的數目是m。你可以用每種牌各一張來組成一套牌,也可以用一張joker和除了某一種牌以外的其他牌各一張組成1套牌。比如,當n 3時,一共有4種合法的套牌 給出n,m和ci,你的任務是組成盡量多的套牌。每張牌最多只能用在一副套牌裡 可以...

撲克牌排序 趣味撲克牌

一提到撲克牌,我們就想到神秘的魔術表演,撲克牌上有很多形狀和數字,裡面蘊藏了很多數學知識哦!瞧 subway的小朋友們正在進行趣味撲克牌的遊戲呢!好多撲克牌啊!撲克牌中間怎麼是空的呢?哇,還有這麼小的撲克牌呢!一看到teacher手中的撲克牌,小傢伙們乙個個的都興奮起來,迫不及待想要分享自己的見解呢...