码迷,mamicode.com
首页 > 其他好文 > 详细

topcoder srm 475 div1

时间:2017-11-12 12:34:40      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:大于等于   lan   年龄   npoi   兔子   com   https   去掉   最大   

problem1 link

problem2 link

假设刚生下来的兔子是1岁,那么能够生小兔子的兔子的年龄是至少3岁。

那么所有的兔子按照年龄可以分为1岁,2岁,大于等于3岁三种情况。不妨令个数分别为$a_{1},a_{2},a_{3}$

在每年生完兔子后,假如是四月,这时候1岁的兔子和大于等于3岁的兔子的数量是一样的($a_{1}=a_{3}$)。那么在11月的时候,如果要去掉一半的兔子,那么一定是大于等于三岁的所有兔子和2岁兔子的一半。$a_{3}=0,a_{2}=\frac{a_{2}}{2}$ or $a_{2}=\frac{a_{2}+1}{2}$

现在的问题是要确定现在2岁的兔子的个数是奇数还是偶数。不妨令三种兔子的奇偶数分别是$x_{1},x_{2},x_{3}$

假设$x_{2}=t*2^{51}+r$,$0 \leq r < 2^{51}$

那么只需要用$r$的奇偶性来代表$x_{2}$的奇偶性即可,即便有除以2,以及加1再除以2的操作。因为$t*2^{51}$除以若干次2后(小于等于50次)仍然是偶数。

problem3 link

假设有$n$只兔子

首先计算出每个兔子得分的最大值最小值。minPoints,maxPoints

设选出的selected只兔子的最后一只的编号为$x$, 假设它此时的得分 maxPoints[x]

令$f[i][j][k]$表示在前$i$只兔子中,有$j$只的排名高于$x$且在这$j$只中选出了$k$只的情况有多少种。那此次的答案为$Answer_{x}=\sum_{i= selected}^{qualified}f[n][i][selected]$

 

topcoder srm 475 div1

标签:大于等于   lan   年龄   npoi   兔子   com   https   去掉   最大   

原文地址:http://www.cnblogs.com/jianglangcaijin/p/7821194.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!