zoukankan      html  css  js  c++  java
  • 组合数学

    1、UVALive 5028/HDU 3723 Delta Wave

    题意:在x-y平面直角坐标系中,每一步都只能从(x0, y0)走到(x0+1, y0)或(x0+1, y0-1)或(x0+1, y0+1),且每一步只能走在第一象限或者x轴正版轴上。给定N,问从点(0, 0)走到(N, 0)共有多少种走法,输出走法数量mod 10^100。2 < N <= 10^4,20 test case。

    解法:就相当于找有多少个这样的数列,全部由0,1,-1组成,且1和-1的数量相同,且S[i]表示前i项和,对于任意的i有S[i] >= 0。枚举1的数量,则0,-1也知道了。枚举0的位置,给1和-1安排位置就是一个卡特兰数。所以枚举i = 0 to n/2,ans += C(n, 2*i) * catalan(i)。而且这个等式是可以用递推求得的。

       下面证明,给m个1和m个-1安排位置就是一个卡特兰数。转化问题,求给2*m个球染红蓝两色的方法种数f(m),设对第i个球它之前(包括它自己)红球数量为x[i],蓝球数量为y[i],要求对任意的i都有x[i] >= y[i]。

       分析该问题,首先,第一个球肯定为红色。第二个球有两种情况:若为蓝球,则f(m) += f(m-1);否则为红球,i不断增大,设当x[i]-1 = y[i]时,x[i] = t,所以f(m) += f(t-1) * f(m-t)。所以是catalan数。

    tag:math, counting, catalan, good

    由于要用到大数,我没有写代码。

    ------------------------------------------------------------------
    现在的你,在干什么呢?
    你是不是还记得,你说你想成为岩哥那样的人。
  • 相关阅读:
    Unity周记: 2020.09.07-09.13
    Unity周记: 2020.08.31-09.06
    CF1060F Shrinking Tree
    洛谷P6783 [Ynoi2008] rrusq
    洛谷P5644 [PKUWC2018] 猎人杀
    洛谷P1587 [NOI2016] 循环之美
    洛谷P4466 [国家集训队] 和与积
    集合幂级数杂题
    Flink基础(49):FLINK SQL(25) 内置函数(七)表值函数
    Flink基础(48):FLINK SQL(24) 内置函数(六)条件函数
  • 原文地址:https://www.cnblogs.com/plumrain/p/counting.html
Copyright © 2011-2022 走看看