当前位置: 首页 > news >正文

2025 ZR暑假集训 CD联考 Day2 E 环球旅行

两次 NOI 金牌选手小 H 想去世界各国旅行。世界上有 \(n\) 个国家,这些国家被 \(n-1\) 条边连在一起。小 H 定义了一个旅行计划:他将他的旅行分为了若干天,每天都会游玩 \(n\) 个国家中的一个非空子集,并且每个国家只会恰好被游玩一次。假设小 H 某天旅游了国家 \(\{a_1, \cdots, a_k\}\),那么当天他需要经过包含这些国家的最小连通块中的所有国家。但注意经过并不是游玩,只经过但没有游玩的国家在其他天中仍然可以被游玩一次。

这些国家拥有着不同的语言,具体的,第 \(i\) 个国家的语言为 \(c_i\)。小 H 如果某天经过的所有国家中有 \(t\) 种不同的语言,那么小 H 这一天的疲劳度为 \(2^t\)

小 H 想要知道,所有不同的旅游计划的疲劳度之和是多少?两个旅游计划不同当且仅当某天游玩的国家不同。答案对 \(10^9+7\) 取模。

\(0\le n\le5000,1\le c_i\le10\)


我们考虑先枚举点集,然后考虑怎么求出贡献的次数。

既然是这个点集的贡献,那么就是求所有方案中包含这个点集的方案数。

设点集大小为 \(k\),接着我们枚举总共旅游了 \(i+1\) 次,那么总的方案数就是

\[h(k)=\sum_{i=1}^{n-k} {n-k\brace i}(i+1)! \]

(记住这个 \(h(k)\),待会要用)

从组合意义上来说就是先把剩下的 \(n-k\) 个放进 \(i\) 次里,然后因为旅游有顺序,所以再乘以 \((i+1)!\),得到的就是总方案数。

接下来我们看怎么求出疲劳度。

正着求不好求,我们考虑反过来,钦定这次旅游中用到的语言集合 \(S\),求出能选中钦定的方案的选点的方案数 \(F(S)\)

但是这样好像还是不好做,我们继续放宽限制,不求刚刚好是 \(S\),而是求语言集合为 \(S'\subseteq S\) 的方案数 \(G(S)\)

这样就十分简单了,我们把不属于 \(S\) 的点全部 “删去”,树被分裂为多个联通块。

此时只要我们选的点全部属于同一个联通块,那么构成的语言集合 \(S'\) 必然包含于 \(S\)

那么假设所有联通块的大小分别为 \(s_1,s_2,\cdots,s_m\),总的方案数就是:

\[G(S)=\sum_{i=1}^m\sum_{j=1}^i{s_i\choose j}h(j) \]

接下来就是最后一步,因为我们求的是语言集合为 \(S'\subseteq S\) 的方案数 \(G\),接下来我们求出 \(F\)

因为有

\[G(S)=\sum_{S'\subseteq S}F(S') \]

根据子集反演,

\[F(S)=\sum_{S'\subseteq S}(-1)^{|S|-|S'|}G(S') \]

因此我们通过枚举子集就能求出 \(F\)

求出 \(F\) 之后,我们乘上 \(2^{|S|}\) 的疲劳值,然后累加,我们就得到了最终的答案!

时间复杂度 \(\mathcal O(n^2+n2^t+3^t)\)\(t=\max c_i\)


http://www.sczhlp.com/news/785.html

相关文章:

  • zk后集训
  • 乘法逆元(部分施工)、exgcd
  • 夏令营Ⅲ期
  • centos8.2 挂载本地镜像作为yum源
  • 非常值得学习渲染入门的一个教程
  • HDU 多校 2025 R3
  • 7.28SAM后缀自动机,回文自动机
  • Linux开机自动登录的一种方法
  • day5
  • JAVA语言学习总结(第27天)
  • CVE-2021-45232 Apache APISIX Dashboard身份验证绕过漏洞 (复现)
  • IIS中配置HTTPS证书的详细步骤
  • Python入门学习(七)高级部分:正则表达式
  • 在运维工作中,如果运行的一个容器突然挂了,如何排查?
  • SciTech-EECS-Library: img2pdf 与 pdf2image : Python 的 pdf 与 image 双向转换库
  • 在运维工作中,docker封闭了哪些资源?
  • 深度学习(pytorch量化)
  • 在运维工作中,传统虚拟化与docker有什么区别?
  • 在运维工作中,Docker怎么清理容器磁盘空间?
  • 在运维工作中,Dockerfile中常见指令有哪些?
  • 英语_阅读_Rivers are important in culture_单词_待读
  • 题解:P12151 【MX-X11-T5】「蓬莱人形 Round 1」俄罗斯方块
  • 题解:P1291 [SHOI2002] 百事世界杯之旅
  • 题解:P4170 [CQOI2007] 涂色
  • 课堂分组赛、组队赛小结
  • 【AI News | 20250725】每日AI进展
  • 题解:P13308 故障
  • 今天做什么
  • mmap提高LCD显示效率
  • 用 Python 构建可扩展的验证码识别系统