一类匹配问题

问题1:有一个糖果的集合,里面有 n n n种糖果,每种有 c i c_i ci个,要把这些糖果分给一些小朋友,使尽可能多的小朋友开心。某个小朋友开心,当他拿到两种不同的糖果

加强:有一个糖果的集合,里面有 n n n种糖果,每种有 c i c_i ci个,要把这些糖果分给一些小朋友,使尽可能多的小朋友开心。某个小朋友开心,当他拿到两种不同的糖果,且他拿到糖果的数量大于等于 m ( m > 2 ) m(m>2) m(m>2)

s u m = ∑ c i sum=\sum c_i sum=ci          m a x c = m a x { c 1 , c 2 , . . . , c n } = c i maxc=max\{c_1,c_2,...,c_n\}=c_i maxc=max{c1,c2,...,cn}=ci

1、 m a x c > ( m − 1 ) ∗ ( s u m − m a x c ) maxc>(m-1)*(sum-maxc) maxc>(m1)(summaxc)

把每个小朋友看成是一个抽屉,当抽屉数大于 s u m − m a x c sum-maxc summaxc时一定存在一个抽屉全为最多的那个糖果,矛盾。

a n s < s u m − m a x c + 1 ans<sum-maxc+1 ans<summaxc+1

后按照分法: m − 1 m-1 m1个最多糖果搭配 1 1 1个剩余糖果分给一个小朋友,可以知道

a n s > = s u m − m a x c + 1 ans>=sum-maxc+1 ans>=summaxc+1

故答案是 s u m − m a x c sum-maxc summaxc

2、 m a x c < = ( m − 1 ) ∗ ( s u m − m a x c ) maxc<=(m-1)*(sum-maxc) maxc<=(m1)(summaxc)

在分给某个小朋友的时候我们尽量去减少我们的序列最大值,得到一个 m a x c ′ maxc' maxc

若操作前的最大值位置等于操作后的最大值位置,则显然成立(因为由糖水公式比值肯定是非增的)

否则操作前的最大值位置的数 > = m a x c ′ − 1 >=maxc'-1 >=maxc1
m a x c ′ s u m ′ − m a x c ′ < = m a x c ′ m a x c ′ + m a x c ′ − 1 \frac {maxc'}{sum'-maxc'}<=\frac {maxc'}{maxc'+maxc'-1} summaxcmaxc<=maxc+maxc1maxc
如果操作完后剩余的糖果堆数大于等于2的话,这个东西不等式肯定是小于1的,只剩一堆的话,该堆的糖果数量小于m,因为如果最后只剩一种糖果且堆数大于等于m,就不满足我们的取法或者不满足分类讨论中的要求了。

故答案等于 s u m m \frac{sum}m msum

问题2:有一个糖果的集合,里面有 n n n种糖果,每种有 c i c_i ci个,要把这些糖果分给一些小朋友,使尽可能多的小朋友开心。某个小朋友开心,当他拿到 t t t种不同的糖果

加强:有一个糖果的集合,里面有 n n n种糖果,每种有 c i c_i ci个,要把这些糖果分给一些小朋友,使尽可能多的小朋友开心。某个小朋友开心,当他拿到 t t t种不同的糖果,且他拿到糖果的数量大于等于 m ( m > t ) m(m>t) m(m>t)

第一题如果是排好序的序列(降序)的话有一种做法,因为知道第一个数一定是在最多的那边取的,所以

a 1 < = ( a 2 + . . . + a n ) / ( t − 1 ) a 1 + a 2 < = ( a 3 + . . . + a n ) / ( t − 2 ) . . . a_1<=(a_2+...+a_n)/(t-1)\\ a_1+a_2<=(a_3+...+a_n)/(t-2)\\ .. . a1<=(a2+...+an)/(t1)a1+a2<=(a3+...+an)/(t2)...
把多于不等式部分的 a i a_i ai减掉就可以了

二分小朋友的数量 n u m num num,然后检查 n u m num num是否合法。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值