ABC273 E~G
E:
考虑维护当前所在位置的指针。
设当前点为 u。
对于第一个操作,我们可以将 u 新增一个儿子 x,并将指针转移到 x。
对于第二个操作,把指针转移到 fau 即可。
对于第三个操作,我们可以开一个 map
,将点 u 放到编号为 x 的 map
中。
对于第四个操作,将指针转移到 mapx 即可。
时间复杂度 O(QlogQ)。
F:
离散化后区间 DP,类似关路灯。
G:
如果 ∑Ri≠∑Ci,显然答案是 0。
接下来假设都满足 ∑Ri=∑Ci。
我们一行一行的填下去,当填到第 i 行的时候,需要满足以下条件:
- ∑Nj=1Ai,j=Ri
- ∀j,C′i,j=Cj−∑ik=1Ak,j≥0
C′i,j 就是填到第 i 行第 j 列还能填的。
注意到最终合法的状态就是填完 N 行之后所以的 C′N,j 都为 0。
设 fi,x 表示填了前 i 行并且目前有 x 列 j 满足 C′i,j=2 的方案数。
设 y 为目前有 y 列 j 满足 C′i,j=1。
则有
N∑j=1C′i,j=y+2x
那么
y=N∑j=1C′i,j−2x
=N∑j=1(Cj−i∑k=1Ak,j)−2x
=N∑j=1Cj−N∑j=1i∑k=1Ak,j−2x
=N∑j=1Cj−i∑k=1N∑j=1Ak,j−2x
=N∑j=1Cj−i∑k=1Rk−2x
所以 y 就能用 x 表示了。
设 x0 表示 j 的数量满足 C′0,j=Cj=2。
则一开始 f0,x0=1,其余均为 0。
然后考虑转移。
如果 Ri=0,则有
fi,x=fi−1,x−1
如果 Ri=1,则有
fi,x=fi−1,x+1×(x+1)+fi−1,x×(y+1)
如果 Ri=2,则有
fi,x=fi−1,x+1×(x+1)+fi−1,x+2×(x+22)+fi−1,x×(y+22)+fi−1,x+1×(x+1)y
最终答案就是 fN,0。
时间复杂度 O(N2)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话