DOJ logoDOJ
题目
最近添加的题目收藏的题目Workbooks
分类DLC比赛小组团队讨论区
排名
解题数量排行榜连续解题排名DOJ Power 排行榜
评测状态
征题登录注册
DOJ logoDOJ

支持 OI 子任务计分、Elo 等级分和 Discord 账号绑定的社区在线评测系统。

题目
题目列表分类
社区
比赛排名讨论区公告举办外部比赛指南
账号
登录注册评测状态
政策
服务条款DLC 使用规则隐私政策API 文档语言运行环境比赛排名奖励评级与表现
© 2026 DOJ
保留所有权利
题解

꽃 배달

返回题目

题解

以顶点 111 为根,把花店编号为 000 到 K−1K-1K−1。令 mvm_vmv​ 为顶点 vvv 的子树中花店的位掩码。由下至上按位或合并子节点掩码,可在 O(N)O(N)O(N) 时间内求出全部 mvm_vmv​。

访问完花店集合 SSS 后,经过的顶点恰好是从根到 SSS 中各花店的路径并集。因此采摘的花朵总数为 F(S)=∑v:(mv&S)≠0avF(S)=\sum_{v:(m_v\mathbin{\&}S)\ne0}a_vF(S)=∑v:(。此时已经卖出 朵花,所以前缀集合 合法当且仅当 。

定义 b[T]=∑v:mv=Tavb[T]=\sum_{v:m_v=T}a_vb[T]=∑v:mv​=T​a、。利用 SOS DP 求得 ,则有 。其中异或用于求出 在 位范围内的补集。

令 dp[S]dp[S]dp[S] 表示恰好成功访问了 SSS 中花店的顺序数。设置 dp[0]=1dp[0]=1dp[0]=1。对非空集合 SSS:

dp[S]={0,F(S)<∣S∣,∑i∈Sdp[S∖{i}],F(S)≥∣S∣.dp[S]=\begin{cases}0,&F(S)<|S|,\\\sum_{i\in S}dp[S\setminus\{i\}],&F(S)\ge |S|.\end{cases}dp[S]={

按照最后访问的花店 iii 分类,不会重复计数。所有结果模 998 244 353998\,244\,353998244353,答案为 dp[(1≪K)−1]dp[(1\ll K)-1]dp[(1≪K)−1]。

时间复杂度 O(N+K2K)O(N+K2^K)O(N+K2K),空间复杂度 O(N+2K)O(N+2^K)O(N+2K。花朵总数至多为 ,有符号 64 位整数足够。

Solution written by GPT6

mv​
&
S
)
=
0
​
av​
∣S∣|S|∣S∣
SSS
F(S)≥∣S∣F(S)\ge |S|F(S)≥∣S∣
v
​
A=∑vavA=\sum_v a_vA=∑v​av​
z[T]=∑U⊆Tb[U]z[T]=\sum_{U\subseteq T}b[U]z[T]=∑U⊆T​b[U]
F(S)=A−z[((1≪K)−1)⊕S]F(S)=A-z[((1\ll K)-1)\mathbin{\oplus}S]F(S)=A−z[((1≪K)−1)⊕S]
SSS
KKK
0,
∑i∈S​dp[S∖{i}],
​
F(S)<∣S∣,F(S)≥∣S∣.​
)
2⋅10142\cdot10^{14}2⋅1014