玩具 [奇妙树形dp/计数]

本文探讨了一个复杂的概率问题,即求解由NNN个结点随机生成的森林中,期望最高的树的高度。文章详细介绍了从最初的想法到正确的解决方案的过程,包括关键的数学推导和算法实现。通过定义F[i,j,k]、f[i,j]和g[i,j]等概念,以及它们之间的转换公式,解决了问题,并给出了具体的C++代码实现。

玩具玩具


NNN 个结点的随机生成森林的 期望最高树高 .


最初想法\color{blue}{最初想法}

F[i,j,k]F[i, j, k]F[i,j,k] 表示高度为 iii, 使用 jjj 个球, kkk 个球在顶部的概率,

F[i,j,k]=F[i,j−1,k]∗j−3j−1+F[i,j−1,k−1]∗1j−1+F[i−1,j−1,p]∗1j−1F[i, j, k] = F[i, j-1, k]* \frac{j-3}{j-1} + F[i, j-1, k-1]*\frac{1}{j-1}+F[i-1, j-1, p]*\frac{1}{j-1}F[i,j,k]=F[i,j1,k]j1j3+F[i,j1,k1]j11+F[i1,j1,p]j11

时间复杂度 O(N4)O(N^4)O(N4), 没有 DeDeDebugbugbug, 暴力保底 30pts30pts30pts .


正解部分\color{red}{正解部分}

题意:题意:: 起初只有一个根, 每次随机一个点加一个儿子, 求出最后形成的 NNN 个节点的树的期望高度 .

这里沿用原题解的几个定义↓这里沿用原题解的几个定义 \downarrow沿
说实话刚开始我觉得很迷 .

  • F[i,j]F[i, j]F[i,j] 表示 iii 个点的森林, 有 jjj 个点在第一颗子树的概率 .
  • f[i,j]f[i, j]f[i,j] 表示有 iii 个节点的树, 深度不超过 jjj 的概率 .
  • g[i,j]g[i, j]g[i,j] 表示有 iii 个节点的森林, 深度不超过 jjj 的概率 .

F[i,j]F[i, j]F[i,j] 很好转移:
F[i,j]=F[i−1,j−1]∗j−1i+F[i−1,j]∗i−jiF[i, j] = F[i-1, j-1]*\frac{j-1}{i} + F[i-1, j]*\frac{i-j}{i}F[i,j]=F[i1,j1]ij1+F[i1,j]iij

然后是 g[i,j]g[i, j]g[i,j] 的转移:
g[i,j]=∑k=1iF[i,k]∗f[k,j]∗g[i−k,j]g[i,j]=\sum_{k=1}^i F[i, k]*f[k, j] * g[i-k, j]g[i,j]=k=1iF[i,k]f[k,j]g[ik,j]

意为在有 i−ki-kik 个点的森林基础上生成一颗 jjj 个点的树, 然后再取出其中满足条件的树 .

将若干深度不超过 j−1j-1j1 的树组成的森林 连上同一个根, 组成一个深度不超过 jjj 的树, 即 f[i,j]=g[i−1,j−1]f[i, j] = g[i-1, j-1]f[i,j]=g[i1,j1] .


实现部分\color{red}{实现部分}

#include<bits/stdc++.h>
#define reg register

int read(){
        char c;
        int s = 0, flag = 1;
        while((c=getchar()) && !isdigit(c))
                if(c == '-'){ flag = -1, c = getchar(); break ; }
        while(isdigit(c)) s = s*10 + c-'0', c = getchar();
        return s * flag;
}

typedef long long ll;
const int maxn = 305;

int N;
int mod;
int inv[maxn];
int F[maxn][maxn];
int g[maxn][maxn];
int f[maxn][maxn];

int main(){
        N = read(), mod = read();
        inv[1] = 1;
        for(reg int i = 2; i <= N; i ++) inv[i] = (((-1ll*mod/i*inv[mod%i])%mod)+mod)%mod;
        F[1][1] = 1;
        for(reg int i = 2; i <= N; i ++)
                for(reg int j = 1; j <= i; j ++){
                        int &t = F[i][j];
                        t = 1ll*F[i-1][j-1]*(j-1)%mod*inv[i]%mod;
                        t = (1ll*t + (1ll*F[i-1][j]*(i-j)%mod*inv[i]%mod)) % mod;
                }
        for(reg int i = 0; i <= N; i ++) g[0][i] = 1;
        for(reg int i = 1; i <= N; i ++)
                for(reg int j = 0; j <= N; j ++){
                        f[i][j] = j?g[i-1][j-1]:(i<=1);
                        int &t = g[i][j];
                        for(reg int k = 1; k <= i; k ++)
                                t = (1ll*t + 1ll*f[k][j]*g[i-k][j]%mod*F[i][k]%mod)%mod;
                }
        int Ans = 0;
        for(reg int i = 1; i < N; i ++)
                Ans = (1ll*Ans + ((1ll*f[N][i]%mod - f[N][i-1]%mod)*i%mod)) % mod;
        Ans = (1ll*Ans%mod + mod) % mod;
        printf("%d\n", Ans);
        return 0;
}


【电动车】基于多目标优化遗传算法NSGAII的峰谷分时电价引导下的电动汽车充电负荷优化研究(Matlab代码实现)内容概要:本文围绕“基于多目标优化遗传算法NSGA-II的峰谷分时电价引导下的电动汽车充电负荷优化研究”展开,利用Matlab代码实现优化模型,旨在通过峰谷分时电价机制引导电动汽车有序充电,降低电网负荷波动,提升能源利用效率。研究融合了多目标优化思想与遗传算法NSGA-II,兼顾电网负荷均衡性、用户充电成本和充电满意度等多个目标,构建了科学合理的数学模型,并通过仿真验证了方法的有效性与实用性。文中还提供了完整的Matlab代码实现路径,便于复现与进一步研究。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的高校研究生、科研人员及从事智能电网、电动汽车调度相关工作的工程技术人员。; 使用场景及目标:①应用于智能电网中电动汽车充电负荷的优化调度;②服务于峰谷电价政策下的需求侧管理研究;③为多目标优化算法在能源系统中的实际应用提供案例参考; 阅读建议:建议读者结合Matlab代码逐步理解模型构建与算法实现过程,重点关注NSGA-II算法在多目标优化中的适应度函数设计、约束处理及Pareto前沿生成机制,同时可尝试调整参数或引入其他智能算法进行对比分析,以深化对优化策略的理解。
一、基础信息 数据集名称:可回收材料目标检测数据集 图片数量: - 训练集:7,701张图片 - 验证集:733张图片 - 测试集:367张图片 - 总计:8,801张图片 分类类别: - carton(纸板):常见可回收包装材料 - metal(金属):如铝罐和铁制品等可回收金属 - papel(纸):纸张类可回收材料 - plastico(塑料):塑料瓶和容器等可回收塑料 - vidrio(玻璃):玻璃瓶和罐等可回收玻璃 标注格式:YOLO格式,包含边界框和类别标签,适用于目标检测任务 数据格式:JPEG图片,来源于实际场景 二、适用场景 智能垃圾回收系统开发: 数据集支持目标检测任务,帮助构建自动识别和分类可回收材料的AI模型,用于智能垃圾桶或回收站,提升垃圾处理效率。 环保与可持续发展应用: 集成至环保设备或移动应用,提供实时材料识别功能,促进垃圾分类和资源回收,支持绿色倡议。 学术与工业研究: 支持计算机视觉在环境科学和废物管理领域的研究,推动AI技术在环保中的创新应用。 教育与培训: 可用于学校或社区项目,作为垃圾分类教育的视觉辅助工具,提高公众环保意识。 三、数据集优势 精准标注与多样性: 标注采用YOLO格式,确保边界框定位准确,类别覆盖五种常见可回收材料,具有高度实用性。 数据规模合理: 拥有超过8,000张图片,训练集、验证集和测试集分布均衡,支持有效的模型训练和评估。 任务适配性强: 标注兼容主流深度学习框架(如YOLO系列),可直接用于目标检测模型开发,加速应用部署。 环保价值突出: 专注于可回收材料识别,有助于减少垃圾污染、促进循环经济,具有显著的社会和环境效益。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值