P5405 [CTS2019]氪金手游 【数学概率+树形dp】

本文探讨了在氪金手游中通过数学概率和树形动态规划方法来计算玩家抽取角色的成功率问题。首先介绍了如何将问题转化为求每个节点比其子树节点先被抽取的概率,并给出了解决方案的具体算法实现。
P5405 [CTS2019]氪金手游 【数学概率+树形dp】

先考虑外向树的情况:

这个的关键是要把求满足拓扑序的概率转化为求 每个点都比它的子树中的所有节点先取到的概率 。单个节点 x x x 的概率是独立的,为 w x ∑ y ∈ s u b t r e e ( x ) w y \frac{w_x}{\sum_{y\in subtree(x)}w_y} ysubtree(x)wywx ,答案就是所有情况下的 节点概率之积 的和。
f [ x ] f[x] f[x] 表示 x x x 子树内满足拓扑序的概率, s z [ x ] sz[x] sz[x] 表示 ∑ y ∈ s u b t r e e ( x ) w y \sum_{y\in subtree(x)}w_y ysubtree(x)wy
可以发现每个 f [ x ] f[x] f[x] 是只与 x x x 的子树有关, f [ x ] = w x s z [ x ] ∏ x → y f [ y ] f[x]=\frac{w_x}{sz[x]}\prod_{x \rightarrow y} f[y] f[x]=sz[x]wxxyf[y]
然后就加一维 f [ x ] [ s z [ x ] ] f[x][sz[x]] f[x][sz[x]] 就可以直接dp了。

考虑有内向边的情况:

可以用 这条边可以外向也可以内向 的方案数,减去 这条边一定外向 的方案数。
也可以容斥,记 g [ i ] g[i] g[i] 表示至少有 i i i 条边不满足条件的方案数。
i i i 条内向边变外向边,剩下的内向边就是 可以外向也可以内向 。
答案就是:

至少零个条件不满足 − - 至少一个条件不满足 + + + 至少两个条件不满足 − ⋯ -\cdots

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

#include <bits/stdc++.h>
#define N 1003
using namespace std;
typedef long long ll;
const int mod=998244353;
int head[N],nxt[N<<1],to[N<<1],tag[N<<1];
int sz[N],lst[N];
int a1[N],a2[N],a3[N];
ll F[N][N*3],arr[N*3];
ll inv[N*3],n,_;
ll ksm(ll x,ll y){
	ll res=1;
	while(y){ 
		if(y&1) res=res*x%mod;
		x=x*x%mod; y>>=1;
	}
	return res;
} 
void init(){
	inv[0]=inv[1]=1;
	for(int i=2;i<=n*3;i++) inv[i]=(mod-mod/i)*inv[mod%i]%mod;
}
void add(int x,int y,int z){ nxt[++_]=head[x],head[x]=_,to[_]=y,tag[_]=z; }
void dfs(int x){
	ll *f=F[x]; f[0]=1;
	int y; 
	for(int __=head[x],y=to[__];__;__=nxt[__],y=to[__]){
		if(y==lst[x]) continue;
		lst[y]=x; dfs(y); ll *g=F[y];
		for(int i=0;i<=(sz[x]+sz[y])*3;i++) arr[i]=0;
		if(tag[__]){
			for(int i=0;i<=sz[x]*3;i++)
				for(int j=0;j<=sz[y]*3;j++)
					arr[i+j]=(arr[i+j]+f[i]*g[j]%mod)%mod;
			for(int i=0;i<=(sz[x]+sz[y])*3;i++) f[i]=arr[i];
		}
		else{
			ll now=0;
			for(int i=0;i<=sz[y]*3;i++) now=(now+g[i])%mod;
			for(int i=0;i<=sz[x]*3;i++) arr[i]=(f[i]*now)%mod;
			for(int i=0;i<=sz[x]*3;i++)
				for(int j=0;j<=sz[y]*3;j++)
					arr[i+j]=(arr[i+j]-f[i]*g[j]%mod+mod)%mod;
			for(int i=0;i<=(sz[x]+sz[y])*3;i++) f[i]=arr[i];
		}
		sz[x]+=sz[y];
	}
	for(int i=0;i<=sz[x]*3+3;i++) arr[i]=0;
	for(int i=0;i<=sz[x]*3;i++){
		arr[i+1]=(arr[i+1]+f[i]*a1[x]%mod*inv[i+1]%mod)%mod;
		arr[i+2]=(arr[i+2]+f[i]*a2[x]%mod*inv[i+2]*2ll%mod)%mod;
		arr[i+3]=(arr[i+3]+f[i]*a3[x]%mod*inv[i+3]*3ll%mod)%mod;
	}
	sz[x]++;
	for(int i=0;i<=sz[x]*3;i++) f[i]=arr[i];
//	cout<<'\n'; 
}
int main(){
//	freopen("fgo9.in","r",stdin);
	cin>>n;
	init();
	for(int i=1;i<=n;i++){
		cin>>a1[i]>>a2[i]>>a3[i];
		ll now=ksm(a1[i]+a2[i]+a3[i],mod-2);
		a1[i]=a1[i]*now%mod;
		a2[i]=a2[i]*now%mod;
		a3[i]=a3[i]*now%mod;
//		cout<<a1[i]<<' '<<a2[i]<<' '<<a3[i]<<'\n';
	}
	int u,v;
	for(int i=1;i<n;i++) cin>>u>>v,add(u,v,1),add(v,u,0);
	dfs(1);
	ll ans=0;
	for(int i=0;i<=sz[1]*3;i++) (ans+=F[1][i])%=mod;
	cout<<ans;
}
具有多种最大功率点跟踪(MPPT)方法的光伏发电系统(P&O-增量法-人工神经网络-模糊逻辑控制-粒子群优化)之使用粒子群算法的最大功率点追踪(MPPT)(Simulink仿真实现)内容概要:本文介绍了一个涵盖多个科研领域的综合性MATLAB仿真资源集合,重点聚焦于光伏发电系统中基于粒子群优化(PSO)算法的最大功率点追踪(MPPT)技术的Simulink仿真实现。文档还列举了多种MPPT方法(如P&O、增量电导法、神经网络、模糊逻辑控制等),并展示了该团队在电力系统、智能优化算法、机器学习、路径规划、无人机控制、信号处理等多个方向的技术服务能力与代码实现案例。整体内容以科研仿真为核心,提供大量可复现的Matlab/Simulink模型和优化算法应用实例。; 适合人群:具备一定电力电子、自动控制或新能源背景,熟悉MATLAB/Simulink环境,从事科研或工程仿真的研究生、科研人员及技术人员。; 使用场景及目标:①学习并实现光伏系统中基于粒子群算法的MPPT控制策略;②掌握多种智能优化算法在电力系统与自动化领域的建模与仿真方法;③获取可用于论文复现、项目开发和技术攻关的高质量仿真资源。; 阅读建议:建议结合提供的网盘资料,按照研究方向选取对应模块进行实践,重点关注Simulink模型结构与算法代码逻辑的结合,注重从原理到仿真实现的全过程理解,提升科研建模能力。
热成像人物检测数据集 一、基础信息 数据集名称:热成像人物检测数据集 图片数量: 训练集:424张图片 验证集:121张图片 测试集:61张图片 总计:606张热成像图片 分类类别: - 热成像人物:在热成像图像中的人物实例 - 非热成像人物:在非热成像或普通图像中的人物实例,用于对比分析 标注格式: YOLO格式,包含边界框和类别标签,适用于目标检测任务。数据来源于热成像和视觉图像,覆盖多种场景条件。 二、适用场景 热成像监控与安防系统开发: 数据集支持目标检测任务,帮助构建能够在低光、夜间或恶劣环境下自动检测和定位人物的AI模型,提升监控系统的可靠性和实时响应能力。 红外视觉应用研发: 集成至红外摄像头或热成像设备中,实现实时人物检测功能,应用于安防、军事、救援和工业检测等领域。 学术研究与创新: 支持计算机视觉与热成像技术的交叉研究,助力开发新算法用于人物行为分析或环境适应型检测模型。 教育与培训: 可用于高校或培训机构,作为学习热成像人物检测和AI模型开发的教学资源,提升实践技能。 三、数据集优势 精准标注与多样性: 每张图片均由专业标注员标注,确保边界框定位准确,类别分类清晰。包含热成像和非热成像类别,提供对比数据,增强模型的泛化能力和鲁棒性。 场景实用性强: 数据覆盖多种环境条件,如不同光照和天气,模拟真实世界应用,适用于复杂场景下的人物检测任务。 任务适配性高: YOLO标注格式兼容主流深度学习框架(如YOLOv5、YOLOv8等),可直接加载使用,支持快速模型开发和评估。 应用价值突出: 专注于热成像人物检测,在安防、监控和特殊环境检测中具有重要价值,支持早期预警和高效决策。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值