题解:AT_agc058_f [AGC058F] Authentic Tree DP

news/2026/1/23 20:54:12/文章来源:https://www.cnblogs.com/LUlululu1616/p/19523984

神题。

题意:给出一棵树,定义树 \(T\) 的权值为 \(f(T)\),其满足:

  • 对于 \(|T|=1\)\(f(T)=1\)

  • 否则,考虑其中每一条边 \((x,y)\),记断掉这条边后两棵树分别为 \(T_x,T_y\),这里不区分顺序,\(f(T) = \sum\limits_{(x,y)}\frac{f(T_x)f(T_y)}{|T|}\)

\(f(T)\)\(n\le 5000\)

做法:

感觉下手完全没啥想法,但是我们观察到一个事情,如果把代价函数里的 \(|T|\) 换成 \(|T|-1\) 那么答案就是 \(1\),因为如果你把边视为点,按照这个选边顺序写成一棵树的结构,发现就是 \(\prod \frac 1{sz}\),也就是这样一棵树的拓扑序个数,那么对于所有的边就是 \(1\) 了。

上面这个东西其实跟做法没啥特别大的关系,但是这告诉我们一点启发,就是我们不能对着这个树硬做,一个比较套路的就是类似上面的,我们给树撒一个排列,然后满足性质的排列的概率这样的。

我们考虑一个事情,如果我们给边加一个点,对于这样的所有点撒一个排列统计合法的,是不是就可以了。我们考虑从最大值删删删,那么我们就要求每次都删在边上而不在点上,一个点不能比他的邻边先删。但是这样会影响我们的子树大小,原本是 \(\frac1{sz}\) 变成 \(\frac 1{2sz-1}\) 了。

如果我们现在代表边的这个点权为 \(0\),那么我们这样撒点就比较好了,但是直接令这个点的点权为 \(0\) 并不是很好理解,我们让这个边的点挂 \(P-1\) 个点在下面,\(P\) 是本题模数,我们惊奇的发现,这样从最大值考虑,第一个删掉他的概率是 \(\frac{1}{n+P(n-1)}=\frac 1 n\),达到了我们想要的效果。

那么我们就转化成了这样一个问题:

给出一颗树,给每个点新标号,要求某些点的新标号大于相邻点的概率是多少少。

这个就很经典了,我们会做森林的情况,所以我们考虑把 \(u\to fa\) 的边容斥成没有限制减去 \(fa\to u\) 的情况,每个位置乘上子树大小的逆元即可。

但是还有个问题,这样我们的子树大小很大,怎么解决?发现这 \(P-1\) 个点,其实是我们为了让边代表点补成权为 \(0\) 才开的,所以直接让边代表的点子树大小初始为 \(0\) 即可,其余跟正常背包没区别。复杂度 \(O(n^2)\)

代码:

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int maxn = 10005, mod = 998244353;
vector<int> e[maxn];
int n, dp[maxn][maxn], sz[maxn], t[maxn], inv[maxn];
int qpow(int x, int k, int p) {int res = 1;while(k) {if(k & 1)res = res * x % p;x = x * x % p; k >>= 1;}return res;
}
void dfs(int u, int fa) {sz[u] = (u <= n);dp[u][sz[u]] = 1;for (int i = 0; i < e[u].size(); i++) {int v = e[u][i];if(v == fa)continue;dfs(v, u);for (int x = 0; x <= sz[u]; x++)t[x] = dp[u][x], dp[u][x] = 0;for (int x = 0; x <= sz[u]; x++)for (int y = 0; y <= sz[v]; y++) {if(u <= n) {dp[u][x + y] = (dp[u][x + y] - t[x] * dp[v][y] % mod + mod) % mod;dp[u][x] = (dp[u][x] + t[x] * dp[v][y] % mod) % mod;}else dp[u][x + y] = (dp[u][x + y] + t[x] * dp[v][y] % mod + mod) % mod;}sz[u] += sz[v];}for (int i = 0; i <= sz[u]; i++)dp[u][i] = dp[u][i] * inv[i] % mod;
}
signed main() {cin >> n;for (int i = 1; i < n; i++) {int x, y; cin >> x >> y;e[x].push_back(i + n);e[y].push_back(i + n);e[i + n].push_back(x);e[i + n].push_back(y);}inv[0] = inv[1] = 1;for (int i = 2; i <= 2 * n; i++)inv[i] = (mod - mod / i) * inv[mod % i] % mod;dfs(1, 0);int ans = 0;for (int i = 0; i <= sz[1]; i++)ans = (ans + dp[1][i]) % mod;cout << ans << endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1206502.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

别再把“数字化管理”当PPT了!18.3%的权重背后,藏着你的降本增效密码

老板们注意&#xff1a;这不是又一篇“数字化转型”的鸡汤文。 这是一份能让你少花冤枉钱、多赚真金白银的实操指南。一、“数字化管理”凭什么占18.3%&#xff1f;因为它是企业的“隐形发动机”2024年&#xff0c;工信部更新了《中小企业数字化水平评测指标》&#xff0c;很多…

nodejs基于vue框架的宠物猫商城售卖管理系_eq667

文章目录基于Node.js与Vue的宠物猫商城管理系统设计要点--nodejs技术栈--结论源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;基于Node.js与Vue的宠物猫商城管理系统设计要点 技术栈选择 后端采用Node.js&#xff08;Express/Koa框架&a…

nodejs基于vue框架的家政服务系统的设计与实现_5o0if

文章目录 系统架构设计核心功能模块技术实现要点性能与安全优化扩展性设计 --nodejs技术栈--结论源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 系统架构设计 采用前后端分离架构&#xff0c;前端基于Vue.js框架实现用户界面&#xf…

nodejs基于vue网上订餐系统的设计与实现_i23b2

文章目录基于 Node.js 和 Vue 的网上订餐系统设计摘要技术栈与核心功能系统亮点性能与扩展性--nodejs技术栈--结论源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;基于 Node.js 和 Vue 的网上订餐系统设计摘要 该系统采用前后端分离架构…

nodejs基于vue乡镇农村居民政务管理系统_93034

文章目录乡镇农村居民政务管理系统概述核心功能模块技术实现要点应用价值--nodejs技术栈--结论源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;乡镇农村居民政务管理系统概述 该系统基于Node.js和Vue.js构建&#xff0c;旨在为乡镇及农…

低代码:设备管理数字化的故障快速响应密码

传统设备管理的困境传统设备管理模式中&#xff0c;故障响应流程繁琐低效&#xff0c;诸多痛点直接影响企业生产效率与运营成本。故障响应迟缓是核心问题。设备突发故障后&#xff0c;操作人员需手动填写报修单并层层递交&#xff0c;信息传递效率低下&#xff0c;流转审批过程…

如何启动Carte,如何使用Carte

PDI&#xff08;Pentaho Data Integration&#xff09;的Carte配置主要包括以下几个方面&#xff1a; 1. 基本配置 安装PDI&#xff1a;从官方网站下载PDI的安装包&#xff0c;并解压到指定目录。 配置Java环境&#xff1a;确保系统已安装Java&#xff0c;并配置好Java环境变…

Pentaho 和他的五位成员(五灵威力) kettle spoon pancarte kitchen (pdi的前生今世)

Pentaho是个合成词Penta是希腊数字 “五”的前缀ho是夏威夷文化词语发音氛围&#xff0c;pdi的&#xff08;Pentaho Data Intergation&#xff09;软件的作者是个夏威夷文化推崇者&#xff0c;作者希望借用五种灵力&#xff0c;和五种构成世界的五种元素来代表&#xff0c;数据…

javafx程序启动cmd.exe调用其他软件或者脚本指令

举个例子 ProcessBuilder pb new ProcessBuilder("cmd.exe", "/c", command); pb.directory(new File( ConfigContextUtils.pdiConfig.getPdiHome())); pb.start(); 解释下这三句 1. ProcessBuilder pb new ProcessBuilder("cmd.exe", &q…

如何解决 Spoon 与 Carte 互联的 UTF-8 编码问题

问题背景 在 Windows 10 环境下配置 PDI 9.4&#xff0c;使用 Spoon 连接 Carte 服务器时遇到以下问题&#xff1a; HTTP 400 Bad Request - Invalid byte 2/3 of 2/3-byte UTF-8 sequence Spoon 无法连接到 Carte 服务器 转换文件无法远程执行 根本原因 Windows 系统默认…

spoon如何连接carte如何将.ktr任务或者.kjb任务提交个远程carte服务让,carte的服务端来执行 etl脚本的任务呢?

前提是你的carte远程服务已经启动了 第一步打开 spoon&#xff0c;打开文件选中你的.ktr或者.kjb 第二步spoon与carte服务的通信连接配置&#xff0c;就是通过.ktr任务配置文件的子服务器选项来配置 第三步 对.ktr任务进行运行时配置 .ktr有两种运行模式 第一种 Pentaho loc…

Pentaho Data Integration:Spoon与Carte的对比

在数据集成和ETL&#xff08;Extract, Transform, Load&#xff09;任务中&#xff0c;Pentaho Data Integration&#xff08;PDI&#xff09;是一个强大的工具。PDI提供了两个主要的组件&#xff1a;Spoon和Carte&#xff0c;它们在执行转换&#xff08;.ktr 文件&#xff09;…

mast3r-smf测试 - MKT

mast3r-smf测试 1 关闭代理# 清除代理环境变量unset http_proxy https_proxy all_proxy HTTP_PROXY HTTPS_PROXY ALL_PROXY # 运行MASt3R demopython3 demo.py \ --model_name checkpoints/MASt3R_ViTLarge_BaseDe…

备份 还原 系统 数据保护

操作系统备份直接找方案厂商给备份方案:硬件还原卡冰点还原Acronis True Image(克隆与恢复软件)Acronis备份还原方案http://www.tieten.cnhttp://www.acronis.com/en-us影子系统赛门铁克傲梅 http://www.disktool.cn/…

nodejs基于vue的教学质量评价管理系统的设计与实现 评教系统39j06

文章目录摘要关键词--nodejs技术栈--结论源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;摘要 该系统基于Node.js和Vue.js构建&#xff0c;旨在实现高校教学质量评价的数字化管理。后端采用Node.js的Express框架提供RESTful API接口&am…

中小厂 AI 招聘隐藏要求:除了技术,这 2 点更关键

在AI人才竞争白热化的当下&#xff0c;中小厂往往无法像大厂那样比拼薪资福利与品牌光环&#xff0c;其招聘逻辑也更贴近业务本质。多数求职者误以为只要夯实Python、TensorFlow等技术栈&#xff0c;就能顺利通关&#xff0c;但实际上面试官在技术达标后&#xff0c;会更看重两…

二叉树递归实现

二叉树链式结构的实现详解&#xff08;C语言&#xff09; 前置说明 在学习二叉树的基本操作前&#xff0c;需先创建一棵二叉树。为降低学习成本&#xff0c;我们手动快速构建一棵简单二叉树&#xff0c;待掌握基本操作后再深入研究真正的创建方式&#xff08;如通过前序序列构…

nodejs基于vue的教师科研项目申报信息管理系统的设计与实现_c7z6m

文章目录设计背景技术架构核心功能创新点实现效果--nodejs技术栈--结论源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;设计背景 教师科研项目申报信息管理系统旨在简化科研项目申报流程&#xff0c;提高管理效率。系统基于Node.js后端…

nodejs基于vue二手商品物品商城网站_s926p

文章目录 基于Node.js与Vue的二手商品商城网站摘要技术栈核心功能部署与优化扩展性 --nodejs技术栈--结论源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 基于Node.js与Vue的二手商品商城网站摘要 技术栈 后端框架: Node.js (Express…

nodejs基于vue基于MVC模式的考研论坛互动交流系统的私信设计与实现

文章目录 考研论坛私信系统的设计与实现摘要 --nodejs技术栈--结论源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 考研论坛私信系统的设计与实现摘要 背景与目标 考研论坛作为信息交流平台&#xff0c;需高效安全的私信功能支持用户间…