你有n種牌,第i種牌的數目為ci。另外有一種特殊的牌:joker,它的數目是m。你可以用每種牌各一張來組成一套牌,也可以用一張joker和除了某一種牌以外的其他牌各一張組成1套牌。比如,當n=3時,一共有4種合法的套牌:, , , 。 給出n, m和ci,你的任務是組成盡量多的套牌。每張牌最多只能用在一副套牌裡(可以有牌不使用)。
n<=50,ci<=5e8
一開始想到乙個複雜一點點的貪心,後來發現二分會更簡潔。
#include
#include
#include
#include
#include
using namespace std;
int n,m,a[55],ans;
bool check(int x)
{ int tmp=min(m,x);
for (int i=1;i<=n;i++)
if (a[i]
撲克牌(二分)
題目描述 你有n種牌,第i種牌的數目為ci。另外有一種特殊的牌 joker,它的數目是m。你可以用每種牌各一張來組成一套牌,也可以用一張joker和除了某一種牌以外的其他牌各一張組成1套牌。比如,當n 3時,一共有4種合法的套牌 給出n,m和ci,你的任務是組成盡量多的套牌。每張牌最多只能用在一副套...
BZOJ 1816 撲克牌 二分
由於答案具有單調性,考慮二分答案並驗證。如果能湊齊x堆,因為每個joke在乙個牌堆裡最多只能用一次,則至多只能用min x,m 個joke.對於每個牌,如果這個牌的總數小於x,用joke補齊剩下的,如果能補齊那麼一定能組成x堆。簡單證明 補齊完後的牌堆裡每用joke乙個,一定能在其他牌裡面湊齊n 1...
程式設計之美 撲克牌
小資料ac,大資料tle。時間限制 2000ms 單點時限 1000ms 記憶體限制 256mb 一副不含王的撲克牌由52張牌組成,由紅桃 黑桃 梅花 方塊4組牌組成,每組13張不同的面值。現在給定52張牌中的若干張,請計算將它們排成一列,相鄰的牌面值不同的方案數。牌的表示方法為xy,其中x為面值,...