[CTS2019] 氪金手游 题解

显然的,假如把每队 \((u_i,v_i)\) 都连一条 \(u_i\to v_i\) 的边,那么一定会形成一棵树,但有外向边也有内向边,其中外向边的定义是从近 \(1\) 点连向远 \(1\) 点的边,内向边相反。

先考虑只有外向边的情况。显然 \(1\) 号必须最后抽,概率为 \(\frac{w_1}{\sum\limits_{i=1}^nw_i}\),然后问题就分解到了他的所有儿子的子树里。一看就有满满的 \(dp\) 味道。设 \(f_{x,i}\) 表示在 \(x\) 子树中,\(\sum\limits_{y\in subtree(x)}w_y=i\) 且满足要求的可能情况数,转移时间复杂度 \(O(n^2)\)

假如遇到反向边,根据容斥原理,答案 \(=\) 这里没边 \(-\) 这里是正向边,也不难处理。

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

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1005,p=998244353;
struct edge{int to,w;};
int n,inv[N*3],f[N][N*3],b[3][N];
vector<edge>g[N];int a[N*3],sz[N];
int qpow(int x,int y){int re=1;while(y){if(y&1) re=re*x%p;x=x*x%p,y>>=1;}return re;
}void dfs(int x,int fa){f[x][0]=1;for(auto cc:g[x]) if(cc.to!=fa){dfs(cc.to,x);int y=cc.to,sm=0;int w=cc.w,sx=sz[x]*3,sy=sz[y]*3;for(int i=0;i<=sx+sy;i++) a[i]=0;if(!w) for(int i=0;i<=sx;i++)for(int j=0;j<=sy;j++) a[i+j]=(a[i+j]+f[x][i]*f[y][j])%p;else{for(int i=0;i<=sy;i++) sm=(sm+f[y][i])%p;for(int i=0;i<=sx;i++) a[i]=sm*f[x][i]%p;for(int i=0;i<=sx;i++) for(int j=0;j<=sy;j++)a[i+j]=(a[i+j]-f[x][i]*f[y][j]%p+p)%p;}for(int i=0;i<=sx+sy;i++) f[x][i]=a[i];sz[x]+=sz[y];}int sx=(sz[x]++)*3;for(int i=0;i<=sx+3;i++) a[i]=0;for(int i=0;i<=sx;i++){a[i+1]=(a[i+1]+f[x][i]*b[0][x]%p*inv[i+1])%p;a[i+2]=(a[i+2]+f[x][i]*b[1][x]%p*inv[i+2]*2)%p;a[i+3]=(a[i+3]+f[x][i]*b[2][x]%p*inv[i+3]*3)%p;}for(int i=0;i<=sx+3;i++) f[x][i]=a[i];
}signed main(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);inv[0]=inv[1]=1,cin>>n;for(int i=2;i<=n*3;i++)inv[i]=(p-p/i)*inv[p%i]%p;for(int i=1,cc;i<=n;i++){cin>>b[0][i]>>b[1][i]>>b[2][i];cc=qpow(b[0][i]+b[1][i]+b[2][i],p-2);for(int j=0;j<3;j++) b[j][i]=b[j][i]*cc%p;}for(int i=1,x,y;i<n;i++)cin>>x>>y,g[x].push_back({y,0}),g[y].push_back({x,1});dfs(1,0);int ans=0;for(int i=sz[1]*3;~i;i--) ans+=f[1][i];return cout<<ans%p,0;
}

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

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

相关文章

网站被劫持且快照被黑,如何快速修复与解决?

一、问题现象与原因分析现象描述从百度点击进入网站时,跳转到非法页面。 直接输入网址访问则正常,未发生跳转。 百度快照显示非法内容,site查看网站收录出现大量非法关键词。 百度网址安全中心提示“该页面可能存在钓鱼欺诈信息”。原因分析首页代码被篡改:黑客在首页文件中…

halcon 深度学习教程(三) 目标检测之水果分类

原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/18777081深度学习教程目录如下,还在继续更新完善中 深度学习系列教程目录有兴趣可以多看其他的halcon教程halcon 学习教程目录本篇主要讲一下halcon的目标检测案例,都是halcon22版本以后才可以用的哈,没有的话…

相或为K

贪心思想:通过排除非法数,确保或运算不会引入多余的1位。 代码展示: #include <bits/stdc++.h> using namespace std; //对于k来说 如果k的第i位为0,则ai的第i为也为0(贪心思想 最优解) //利用二进制进行拆位,用>>和&的方式进行 int t,n,k;bool check(int…

WebKit Inside: 渲染树

iOS WebKit 渲染树的构建过程经过CSS的匹配,就要进入渲染树的构建。 渲染树也叫RenderObject树,因为渲染树上每一个节点,都是RenderObject的子类。 首先来看一下RenderObject的继承类图。 1 RenderObject 继承类图RenderText表示要渲染的文本。 RenderButton表示要渲染的按钮…

使用Chat2DB操作WINCC的Microsoft SQL Server数据库

配置WINCC软件自动安装的Microsoft SQL Server 数据库,使之可以被外部程序访问2025年3月30日 11:59 周日 记录 WINCC软件安装时,会同时安装对应版本的Microsoft SQL Server 数据库。 该记录主要是配置WINCC软件自动安装的Microsoft SQL Server 数据库,使之可以被外部程序访问…

GO单元测试-工具

本文介绍如何在GO语言中编写单元测试,主要内容包括:标准库中的testing包,第三方框架testify和mockery工具,monkey patching框架gomonkey,以及如何查看覆盖率。GO单元测试 摘要 本文介绍如何在GO语言中编写单元测试,主要内容包括:标准库中的testing包,第三方框架testify…

36.7K star!拖拽构建AI流程,这个开源LLM应用框架绝了!

`Flowise` 是一款革命性的低代码LLM应用构建工具,开发者通过可视化拖拽界面,就能快速搭建基于大语言模型的智能工作流。该项目在GitHub上线不到1年就斩获**36.7K星标**,被开发者誉为"AI时代的乐高积木"。36.7K star!拖拽构建AI流程,这个开源LLM应用框架绝了! 只…

Tandis 解法集()

1-x 的关卡都比较简单。 2-1: 现在我们有一个常驻的旋转操作。 和某个 1-x 的关卡一样处理即可。 2-2: 开始起飞了。 操作类似于一个极坐标变换:把方块平放即可得到圆。 2-3如果要通过这种变换得到一个中心对称图形,那左侧放的一定也是长度恰好为 8 的倒下的柱体。 而柱体的切…

Java24发布,精心总结

Java 24作为2025年3月发布的最新版本,延续了Java平台每半年发布一次的节奏,带来了24项重要改进。本文将按照核心改进领域分类,详细解析每个特性的技术原理和实际价值,帮助开发者全面了解这一版本的能力边界和应用场景。 不过Java24是自Java 21 以来的第三个非长期支持版本,…

一台电脑上快速切换git账号

如果你的一台笔记本,既要开发公司的项目,同时你又要参与github,或者是gitee上的开源项目。你就需要使用不同的账号来提交代码。如何快速、高效的切换和管理不同的git账号? 本人使用的就是这种方式,只要配置好,会自动切换的。本文来自博客园,作者:Eular,转载请注明原文…

从 0 到 1 打造代码扫描工具:实战指南与技术解析

在团队协作开发的场景中,代码规范的重要性不言而喻。当团队规模逐渐扩大,如何确保每个人提交的代码都符合规范,比如不能 import *、代码嵌套不能超3层,代码包层级依赖结构约定、 不能修改核心文件等,成为了一个亟待解决的问题。今天,咱们就来聊聊如何开发一个代码扫描工具…

深入解析Java Web开发中的异常处理机制:策略、实践与案例分析

一、引言 1. Java Web开发概述 Java Web开发是基于Java语言构建网络应用程序的过程,它通过Java Servlet、JSP(JavaServer Pages)、Spring MVC等技术,实现动态网页的生成和交互。Java Web应用广泛应用于企业级系统、电子商务平台、在线教育等领域。在这些应用中,用户通过浏…