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

CF917D 题解

CF917D 题解

Link

用一下 CF156D 的结论,即将 \(k\) 个连通块连起来有 \(n^{k-2} \prod\limits_{i=1}^ks_i\) 种情况。

这道题目要让求和树共享 \(k\) 条边的树的个数。似乎也可以套用上述公式。

\(f(x)\) 表示恰好和原树共享 \(x\) 条边的方案数,\(g(x)\) 为至少共享 \(x\) 条边的方案数。

很明显可以使用二项式反演。

即:

\[\begin{aligned} f(x)=\sum_{i=x}^{n-1}(-1)^{i-x}\binom{i}{x}g(i) \end{aligned} \]

现在来考虑 \(g\) 函数的求法。

我们可以先删去一些原来树上的边,再利用上述结论(相当于就是乱连),求出 \(g\)

详细的说,我们要求对于每一个 \(i\) ,求出对于每一种将树分成 \(n-i\) 个连通块的方案,\(\prod\limits_{i=1}^{n-i}s_i\) 的和。

考虑树上dp

Solve 1

\(dp_{i,j,k}\) 表示在 \(i\) 的子树中划分了 \(j\) 个连通块,\(i\) 这个连通块大小为 \(k\) 的乘积的和(没有乘当前连通块)。然后考虑转移。

\[\begin{aligned}dp_{u,x,a}\cdot dp_{v,y,b}\cdot b \to dp'_{u, x+y, a} \\dp_{u,x,a}\cdot dp_{v,y,b} \to dp'_{u, x+y-1, a+b}\\ \end{aligned} \]

时间复杂度 \(O(n^3)\)

Solve 2

考虑 \(\prod\limits_{i=1}^{k}s_i\) 的组合意义:在每一个连通块中选择一个点的方案数。

重新定义状态。

\(dp_{i,j,0/1}\) 表示\(i\) 的子树中划分了 \(j\) 个连通块,\(i\) 连通块有没有选点(\(0\) 为不选,\(1\) 为选)。

考虑转移。

\[\begin{aligned} dp_{u,x,0}\cdot dp_{v,y,1} \to dp'_{u, x+y, 0}\\ dp_{u,x,1}\cdot dp_{v,y,1} \to dp'_{u, x+y, 1}\\ dp_{u,x,0}\cdot dp_{v,y,0} \to dp'_{u, x+y-1, 0}\\ dp_{u,x,1}\cdot dp_{v,y,0} + dp_{u,x,0}\cdot dp_{v,y,1}\to dp'_{u, x+y-1, 1}\\ \end{aligned} \]

时间复杂度 \(O(n^2)\)

然后就做完了。

Solve 3

代码:

#include <bits/stdc++.h>
#define FASTIO ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std;
using ll = long long;
using pii = pair<int, int>;
const int N = 105;
const int Md = 1e9 + 7;
vector<int> vec[N];
ll n, dp[N][N][2], siz[N], f[N][2], C[N][N];
ll Pw[N], g[N], ans[N];
signed main() {FASTIO;cin >> n;for (int i = 1; i < n; ++i) {int u, v; cin >> u >> v;    vec[u].emplace_back(v);vec[v].emplace_back(u);}function<void(void)> init = [&](void) -> auto {C[0][0] = 1;for (int i = 1; i < N; ++i) {C[i][0] = 1;for (int j = 1; j <= i; ++j) C[i][j] = (C[i - 1][j - 1] + C[i - 1][j]) % Md;}Pw[0] = 1;for (int i = 1; i < N; ++i)Pw[i] = (Pw[i - 1] * n) % Md;};init();function<void(int, int)> dfs1 = [&](int u, int fa) -> auto {siz[u] = 1;dp[u][1][0] = dp[u][1][1] = 1;for (auto v : vec[u]) {if (v == fa) continue;dfs1(v, u);   for (int j = 1; j <= siz[u]; ++j) {for (int k = 1; k <= siz[v]; ++k) {f[j + k][0] = (dp[u][j][0] * dp[v][k][1] % Md + f[j + k][0]) % Md;f[j + k][1] = (dp[u][j][1] * dp[v][k][1] % Md + f[j + k][1]) % Md;f[j + k - 1][0] = (dp[u][j][0] * dp[v][k][0] % Md + f[j + k - 1][0]) % Md;f[j + k - 1][1] = ((dp[u][j][1] * dp[v][k][0] % Md + dp[u][j][0] * dp[v][k][1] % Md) % Md + f[j + k - 1][1]) % Md;}}siz[u] += siz[v];for (int j = 1; j <= siz[u]; ++j) for (int k = 0; k <= 1; ++k) {dp[u][j][k] = f[j][k];f[j][k] = 0;}}};  dfs1(1, 0);for (int i = 0; i <= n - 2; ++i) g[i] = 1ll * dp[1][n - i][1] * Pw[n - i - 2] % Md;g[n - 1] = 1;for (int x = 0; x < n; ++x) {for (int j = x; j <= n - 1; ++j) {if ((j - x) & 1) ans[x] = (ans[x] - 1ll * C[j][x] * g[j] % Md) % Md;else ans[x] = (ans[x] + 1ll * C[j][x] * g[j] % Md) % Md;ans[x] = (ans[x] + Md) % Md;}cout << ans[x] << ' ';}return 0;
}
http://www.jsqmd.com/news/369006/

相关文章:

  • 科研人必看|CYP酶、UGT酶厂家怎么挑?肝微粒体+原代肝细胞选购技巧大揭秘 - 品牌推荐大师1
  • 2026年比较好的自动化设备工作灯/工作灯人气实力厂商推荐 - 品牌宣传支持者
  • 2026年全过程工程咨询公司终极评测(IDC+Gartner双重背书)| 企业选型避坑全指南 - 品牌推荐
  • 2026年北京监理公司推荐:基于多类型项目实测排名,应对成本超支与合规风险核心痛点 - 品牌推荐
  • 2026年有实力的涡轮焊接球阀,法兰焊接球阀厂家口碑推荐榜 - 品牌鉴赏师
  • 2026年度全过程工程咨询公司推荐榜单:一体化服务与数字化能力双维度综合评估 - 品牌推荐
  • 2026别错过!专科生必备的降AIGC平台 —— 千笔
  • MySQL常用字符串函数
  • mongodb Replica Set集群搭建(三节点)
  • 2026年质量好的高压法兰/非标法兰优质供应商推荐参考 - 品牌宣传支持者
  • 2026年有实力的平焊不锈钢法兰,对焊不锈钢法兰厂家采购优选榜单 - 品牌鉴赏师
  • 转:魔搭社区每天免费提供2000次Claude Code调用
  • 2026年全过程工程咨询公司推荐:数字化转型趋势评价,涵盖城市更新与工业项目管控痛点 - 品牌推荐
  • 2026年全过程工程咨询公司推荐:权威榜单深度解析与战略选型指南 - 品牌推荐
  • 【CSDN观察】高新技术企业认定的意义在于解决三个核心矛盾
  • 【Matlab】MATLAB 图形绘制教程:hold on 保留图形用法详解(同图多曲线绘制与多组数据对比)
  • 2026靠谱的私域电商平台TOP8出炉!小鹅通等8家企业领跑行业 - 资讯焦点
  • web容器和ioc容器
  • 2026年2月访客机品牌实战报告:主流品牌产品性能及场景适配度对比 - 品牌推荐
  • 【Matlab】MATLAB 多子图绘制教程:subplot 用法详解
  • 警惕黄精高含量宣传造假!2026黄精品牌真实品质排行榜:临床数据支撑! - 资讯焦点
  • 2026 成都英语雅思培训教育机构推荐|雅思培训课程中心权威口碑榜单 - 老周说教育
  • 【含文档+PPT+源码】基于小程序开发的宠物寄养平台管理系统
  • 【Matlab】MATLAB plot样式设置教程:线型、标记点配置与数据曲线区分
  • NOIP2025 补全计划
  • CANN shmem 内存池设计与跨进程虚拟地址映射原理
  • 2026年比较好的银焊粉回收/贵金属废渣回收优质厂商精选推荐(口碑) - 品牌宣传支持者
  • 100多套官网HTML源码 前端静态页面源码
  • CANN shmem 在多模型共驻场景下的安全隔离架构
  • 2026年正规的小胸内衣,超薄内衣店优质品牌推荐名录 - 品牌鉴赏师