首页 > 其他分享 >格路计数和反射容斥

格路计数和反射容斥

时间:2022-12-24 19:57:28浏览次数:35  
标签:bcbc 方案 bc 到达 容斥 计数 反射 ... 格路

起源:将这个 dp 式子优化到线性。

\[dp_{i,j} = \sum \limits_{k = j + 1 - b - a}^{j + 1}{dp_{i-1, k}} \]

考虑一个二维平面上,只能向右边或者上面走。也就是,当你走到 \((x,y)\) 的时候,你可以走到 \((x + 1, y)\) 或者 \((x, y + 1)\)。

容易发现,走到 \((n, m)\) 的方案数为 \(\dbinom{n + m}{n}\)。

如果有一条线 \(y = x + b\) 不可碰撞:
image

对于所有碰到这条线的,从第一次触碰开始反转,结束位置会变成 \((n,m)\) 关于 \(y=x+b\) 对称的点 \((m-b,n+b)\)。(如何推导?\(y=x+b\) 分别和 \(y=m,x=n\) 的交点的 \(x,y\) 坐标。)

image

容易发现一条走到 \((m-b,n+b)\) 的线翻折之后对应的都是一条经过了 \(y=x+b\) 的路线。(这里指的是如果碰到线上一个点也算)

因此如果把 \(\dbinom{n+m}{n}\) 记为 \(p(n,m)\),表示 \((0,0)\) 到 \((n,m)\) 的路线个数,那么要求的答案等于 \(p(n,m) - p(m-b,n+b)\)。

如果有两条呢?\(y=x+b\) 和 \(y=x+c\)。
如果 \(b,c\) 都在终点的同一侧,可以认为是一个限制。否则形如下图:

image

考虑答案为:总方案数 \(-\) 经过 \(y=x+b\) 的方案数 \(-\) 经过 \(y=x+c\) 的方案数 \(+\) 两个都经过的方案数。

这个说法有一定道理。但是有个问题,两个都经过的方案数怎么算?

image
(默认 \(c<b\))
这个路线,如果先对 \(y=x+b\) 翻折再对 \(y=x+(2b-c)\)(也就是 \(x=c\) 关于 \(x=b\) 的对称点)翻折会变成:
image

那么方案数为 \(p((n+b)-d,(m-b)+d),d=2b-c\)。

但是还有先到达 \(y=x+c\) 再到达 \(y=x+b\) 的例子。还有先到达 \(y=x+b\) 然后到达 \(y=x+c\) 再到达 \(y=x+b\) 的例子...

image

例如这个例子,它是 \(bcbc\),在计算 \(bc\) 的时候,有 \(2 + 1 = 3\) 种方案和它有关。只要经过那一条长虚线,都是走过 \(bcb\) 的线;\(bcbc\) 的判断同理。在每一个 \(b\) 和后面的一个 \(c\) 处,都可以拐弯。因此,如果 \(bcbc...bc\) 串长度为 \(k\),那么代表它的经过 \(i\) 次折叠分别为 \(bc...bc\) 的线有 \(???\) 条。例如一条路线分别穿过 \(bcbcbcbc\),那么在终点关于 \(bcb\) 对称之后,代表它的有 \(f_?(8,3)\) 条。

那么我们需要统计的是:(一串字母表示到达线的先后,只管有没有到达,不管别的)
\(\emptyset - b -c+bc+cb-bcb-cbc+bcbc-cbcb+...\)

容易发现一次反射最少超过 \(1\) 的偏移量,而如果反射到第一象限外就没有贡献,不需要再反射了。时间复杂度 \(O(\cfrac{n+m}{b-c})\)。

标签:bcbc,方案,bc,到达,容斥,计数,反射,...,格路
From: https://www.cnblogs.com/Zeardoe/p/17003282.html

相关文章

  • 常用同步时序电路(同步计数器、时钟发生电路、通用移位寄存器)
    1同步计数器实际集成电路同步计数器有辅助功能:同步置数、同步或异步复位、超前进位【典型4位二进制同步计数器】4个输出$Q_A$~$Q_D$4个并行输入A、B、C、D4个控制端$......
  • AcWing1134/洛谷P1144 最短路计数
    AcWing传送门洛谷传送门题目大意\(\qquad\)给一个无向图,边权都是\(1\),求出以\(1\)为源点,到各个点(\(1\simn\))的最短路数量解题思路\(\qquad\)边权都是\(1\)的图中最......
  • 省选08. 组合计数
    P4091[HEOI2016/TJOI2016]求和有一个重要的通项公式\[\begin{Bmatrix}n\\m\end{Bmatrix}=\sum_{i=0}^{m}\frac{i^n(-1)^{m-i}}{i!(m-i)!}\]\[ans=\sum_{i=0}^{n}\sum......
  • 教你用JavaScript实现计数器
    案例介绍欢迎来到我的小院,我是霍大侠,恭喜你今天又要进步一点点了!我们来用JavaScript编程实战案例,做一个计数器。点击按钮数字改变,点击重置数字归0。通过实战我们将学......
  • 教你用JavaScript实现计数器
    案例介绍欢迎来到我的小院,我是霍大侠,恭喜你今天又要进步一点点了!我们来用JavaScript编程实战案例,做一个计数器。点击按钮数字改变,点击重置数字归0。通过实战我们将学会fo......
  • 决定程序流程的程序计数器
    首先要有程序运行的开始位置,然后Windows等操作系统把程序从硬盘复制到内存后会将程序计数器(CPU寄存器的一种)设定为指定开始位置的地址,然后程序便开始运行。CPU每执行一个指......
  • 统计数字
    题目描述小南跟着导师进行科研调查,得到了n个自然数(1≤n≤200000),每个数均不超过1500000000(1.5*109),即long型。已知不相同的数不超过10000个,现在需要统计这些自然数各自出......
  • 杂谈:二项式反演与多步容斥
    这是两个本质不同的东西。多步容斥是“至少或至多选若干个”到“恰好选若干个”的变换。而二项式反演是“钦定选若干个”到“恰好选若干个”的变换。二项式反演虽然形式上......
  • lua中统计数表数据两个方法及其优劣
    现在有一个需求:针对一个答题统计,需要统计近5次的错误次数.思路是,使用数表去储存这5次错误次数,然后统计数表现在有一个5个元素的数表error_last_5_times={1,0......
  • 【Pytest--html报告优化+增加错误截图,获取统计数据】
    一、pytest生成的原始html报告1、在我们实际工作中,环境信息不一定要在报告中详细提现,可以增减2、用例信息,默认展示的是用例的model名::用例名称,并不直观,所以我们可以增加一......