题目链接
题意
一个人在一张地图上走,每次只能向左右或者向上走,且不能经过墙。
现在$q$次询问,每次可能会把一个空地变成墙或墙变空地。也可能询问从$(1,a)$到$(n,b)$的方案数。
思路
从第$i$行到第$i+1$行,方案数有多少?我们考虑从$i$行的$j$位置先走到$(i,k)$在到$(i+1,k)$作为一种方案,那么只要在$(i,j)$到$(i,k)$的路上没有墙即可。
这个东西其实可以被我们写成一个矩阵。
接下来的一切理所当然变成线段树维护矩阵乘积。
Code
1 |
|
一个人在一张地图上走,每次只能向左右或者向上走,且不能经过墙。
现在$q$次询问,每次可能会把一个空地变成墙或墙变空地。也可能询问从$(1,a)$到$(n,b)$的方案数。
从第$i$行到第$i+1$行,方案数有多少?我们考虑从$i$行的$j$位置先走到$(i,k)$在到$(i+1,k)$作为一种方案,那么只要在$(i,j)$到$(i,k)$的路上没有墙即可。
这个东西其实可以被我们写成一个矩阵。
接下来的一切理所当然变成线段树维护矩阵乘积。
1 | #include<bits/stdc++.h> |