topcoder srm 475 div1

Posted Only the Strong Survive

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了topcoder srm 475 div1相关的知识,希望对你有一定的参考价值。

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的主要内容,如果未能解决你的问题,请参考以下文章

Topcoder SRM 刷题企划

Topcoder SRM 145

topcoder srm list

Topcoder SRM 147

Topcoder SRM 146

Topcoder SRM 144