[ARC124E]Pass to Next
Posted StaroForgin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[ARC124E]Pass to Next相关的知识,希望对你有一定的参考价值。
Pass to Next
题解
做过一遍的题再做一遍有不会了。
首先,我们发现,如果每个人都至少传了一个球,那么我们得到的最终的序列就会与去掉它们都串的球的最小值后的序列相同。
所以我们的答案可以用所有方案
−
-
−至少传一个球的方案得出,显然,总共有
∏
(
a
i
+
1
)
−
∏
a
i
\\prod(a_{i}+1)-\\prod a_{i}
∏(ai+1)−∏ai种方案,但我们要求的答案是
∑
∏
x
i
\\sum \\prod x_{i}
∑∏xi,这东西要怎么求呢?
考虑将这个乘积的式子用组合意义的方法转换一下,
∏
x
i
\\prod x_{i}
∏xi显然就是就是让每个人从自己的球中选出一个的方案数,所以我们需要求出所有传球方案的选球方案数。
上面的问题显然可以考虑用
d
p
dp
dp求出,我们定义
d
p
i
,
0
/
1
dp_{i,0/1}
dpi,0/1,考虑第
i
i
i个人,第
i
i
i个人在前一个人/他自己的球中选择球的方案数。
显然我们的转移应该是有两个部分内的,一个是他往后传球的部分,他选自己的球的部分。
如果他要在前面一个人的球中选球,那就应该在从
d
p
i
−
1
−
>
d
p
i
dp_{i-1}->dp_{i}
dpi−1−>dpi时处理好他的方案。
如果他要在自己的球中选球,那就应该在从
d
p
i
−
>
d
p
i
+
1
dp_{i}->dp_{i+1}
dpi−>dpi+1时处理好他的方案。
因为这两中选球的不同涉及到他或者他前面的人的传球方案。
转移应该还是比较好想的,主要就是枚举一下
d
p
i
dp_{i}
dpi与
d
p
i
+
1
dp_{i+1}
dpi+1的
0
/
1
0/1
0/1状态,总共四种转移。
下面以没有现在的方案为例,
- d p i , 0 − > d p i + 1 , 0 dp_{i,0}->dp_{i+1,0} dpi,0−>dpi+1,0,显然我们此时需要考虑两个要素, i i i在自己这里选的方案与 i i i的传球方案,显然总方案数是 ∑ i = 0 a i ∑ j = 1 a i [ j > i ] = ( a i + 1 ) a i 2 \\sum_{i=0}^{a_{i}}\\sum_{j=1}^{a_{i}}[j>i]=\\frac{(a_{i}+1)a_{i}}{2} ∑i=0ai∑j=1ai[j>i]=2(ai+1)ai,也就是 d p i , 0 dp_{i,0} dpi,0转移的系数。
- d p i , 0 − > d p i + 1 , 1 dp_{i,0}->dp_{i+1,1} dpi,0−>dpi+1,1,这里就还需要将 i + 1 i+1 i+1的选球方案加进去,变成 ∑ i = 0 a i ∑ j = 1 a i ∑ k = 1 a i [ j > i ∧ k ⩽ i ] = ∑ i = 0 a i i ( a i − i ) = a i 2 ( a i + 1 ) 2 − a i ( a i + 1 ) ( 2 a i + 1 ) 6 \\sum_{i=0}^{a_{i}}\\sum_{j=1}^{a_{i}}\\sum_{k=1}^{a_{i}}[j>i\\wedge k\\leqslant i]=\\sum_{i=0}^{a_{i}}i(a_{i}-i)=\\frac{a_{i}^2(a_{i}+1)}{2}-\\frac{a_{i}(a_{i}+1)(2a_{i}+1)}{6} ∑i=0ai∑j=1ai∑k=1ai[j>i∧k⩽i]=∑i=0aii(ai−i)=2ai2(ai+1)−6ai(ai+1)(2ai+1)。
- d p i , 1 − > d p i + 1 , 0 dp_{i,1}->dp_{i+1,0} dpi,1−>dpi+1,0,显然,这里就只用考虑 i i i的传球方案了,系数就是 a i + 1 a_{i}+1 ai+1。
- d p i , 1 − > d p i + 1 , 1 dp_{i,1}->dp_{i+1,1} dpi,1−>dpi+1,1,这样就要考虑 i i i的传球方案与 i + 1 i+1 i+1的选择方案,系数为 ∑ i = 0 a i ∑ j = 1 a i [ j ⩽ i ] \\sum_{i=0}^{a_{i}}\\sum_{j=1}^{a_{i}}[j\\leqslant i] ∑i=0ai∑j=1ai[j⩽i],与第一类是等价的。
有至少传一个球的限制的方案实际上是与这个相似的,很好推出,具体可见代码。 以上是关于[ARC124E]Pass to Next的主要内容,如果未能解决你的问题,请参考以下文章 Convert BSpline Curve to Arc Spline in OpenCASCADE PING[ARC2]: Heartbeat failed to connect to standby 'gqtzdb_dg'. Error is 16047
直接这样去
d
p