「tricks」整体DP

不太了解这个东西的具体定义是什么,总之应该是一个用数据结构维护 DP 状态的某几个维度的 trick 吧。

事实上你可以把这篇 post 理解为三个题的解集。

先直接来看 noi2020 - Destiny 这个题。

给定一棵树 T = ( V , E ) T = (V, E) T=(V,E) 和点对集合 Q ⊆ V × V \mathcal Q \subseteq V \times V QV×V ,满足对于所有 ( u , v ) ∈ Q (u, v) \in \mathcal Q (u,v)Q,都有 u ≠ v u \neq v u=v,并且 u u u v v v 在树 T T T 上的祖先。其中 V V V E E E 分别代表树 T T T 的结点集和边集。求有多少个不同的函数 f f f : E → { 0 , 1 } E \to \{0, 1\} E{ 0,1}(将每条边 e ∈ E e \in E eE f ( e ) f(e) f(e) 值置为 0 0 0 1 1 1),满足对于任何 ( u , v ) ∈ Q (u, v) \in \mathcal Q (u,v)Q,都存在 u u u v v v 路径上的一条边 e e e 使得 f ( e ) = 1 f(e) = 1 f(e)=1。由于答案可能非常大,你只需要输出结果对 998 , 244 , 353 998,244,353 998,244,353(一个素数)取模的结果。

我们略过 DP 的过程,直接给出其定义 f ( x , j ) f(x,j) f(x,j) 表示考虑子树 i i i,限制条件的 v ∈ s u b t r e e ( x ) v\in{\rm subtree}(x) vsubtree(x) 且限制 ( u , v ) (u,v) (u,v) 尚未被满足, u u u 的深度最深且 j = d e p ( u ) j={\rm dep}(u) j=dep(u) 的不同映射 f : E s u b t r e e ( x ) → { 0 , 1 } f:E_{ {\rm subtree}(x)}\rightarrow\{0,1\}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值