首页 > 其他分享 >树形dp格式

树形dp格式

时间:2024-12-03 13:59:18浏览次数:4  
标签:return int back dfs 树形 long 格式 dp mod

潜入行动 为例, 主要是dfs部分的代码,每次合成两个树,然后再把新的树往上面和,转移会非常容易

#include<bits/stdc++.h>
using namespace std;
#define LL long long
const int N = 1e5 + 10, mod = 1e9 + 7;
int f[N][105][2][2], n, k, siz[N], g[105][2][2];
vector<int>E[N];
int add(int x, int y) { return (x + y) % mod; }
int mul(int x, int y) { return (1ll * x * y %mod);}
void dfs(int fa, int u) {
    //初始化区
    siz[u] = 1;
    f[u][0][0][0] = f[u][1][1][0] = 1;
    //遍历区
    for (int v : E[u]) {
        if (v == fa) continue;
        dfs(u, v);
        //转移区
        for (int i = 0; i <= min(k, siz[u]); i++) {
            for (int j = 0; j <= min(k, siz[v]) && j + i <= k; j++) {
                g[i + j][0][0] = add(g[i + j][0][0], mul(f[u][i][0][0], f[v][j][0][1]));
                g[i + j][1][0] = add(g[i + j][1][0], mul(f[u][i][1][0],  add(f[v][j][0][0], f[v][j][0][1])));
                g[i + j][0][1] = add(g[i + j][0][1], add(mul(f[u][i][0][1], add(f[v][j][0][1], f[v][j][1][1])), mul(f[u][i][0][0], f[v][j][1][1])));
                g[i + j][1][1] = add(g[i + j][1][1], add(mul(f[u][i][1][0], add(f[v][j][1][0], f[v][j][1][1])), 
                                                            mul(f[u][i][1][1], add(f[v][j][0][0], add(f[v][j][1][0], add(f[v][j][1][1], f[v][j][0][1]))))));
            }
        }
        siz[u] += siz[v];
        //覆盖清空区
        for (int i = 0; i <= min(k, siz[u]); i++) {
            f[u][i][0][0] = g[i][0][0]; g[i][0][0] = 0;
            f[u][i][0][1] = g[i][0][1]; g[i][0][1] = 0;
            f[u][i][1][0] = g[i][1][0]; g[i][1][0] = 0;
            f[u][i][1][1] = g[i][1][1]; g[i][1][1] = 0;
        }
        // for (int i = 0; i <= k; i++) g[i][0][0] = g[i][0][1] = g[i][1][0] = g[i][1][1] = 0;
    }
}
signed main() {
    cin >> n >> k;
    for (int i = 1; i < n; i++) {
        int u, v; cin >> u >> v;
        E[u].push_back(v); E[v].push_back(u);
    }
    dfs(0, 1);
    // cout << f[3][2][1][1] <<' ' << f[3][2][0][1] << ' ' << f[3][2][1][0]<< endl;
    cout << add(f[1][k][1][1], f[1][k][0][1]) << endl;
}

标签:return,int,back,dfs,树形,long,格式,dp,mod
From: https://www.cnblogs.com/lyrrr/p/18583934

相关文章

  • Sigrity Power DC Single-BoardPackage ET Co-Simulation模式进行单板电热协同仿真分
    SigrityPowerDCSingle-BoardPackageETCo-Simulation模式进行单板电热协同仿真分析操作指导SigrityPowerDCSingle-BoardPackageIRDropAnalysis模式进行单板压降仿真分析操作指导详细介绍了单板的压降仿真分析流程,下面同样以这个例子进行电热协同仿真分析具体操作......
  • Sigrity Power DC Single-BoardPackage IR Drop Analysis模式进行封装基板压降仿真分
    SigrityPowerDCSingle-BoardPackageIRDropAnalysis模式进行封装基板压降仿真分析操作指导SigrityPowerDCSingle-BoardPackageIRDropAnalysis模式不仅可以用于PCB压降仿真分析,同样也可以用于封装基板的压降仿真分析,以下图为例进行说明具体操作如下双击打开Powe......
  • 《Python PDF 格式转换全攻略》
    《PythonPDF格式转换全攻略》一、引言二、常见的PDF转文件格式方法1.PDF转Word(一)、使用pdf2docx库(二)、使用PyMuPDF库(三)、使用pdfminer库(四)、使用PyPDF2和python-docx库(五)、使用pdf2image和python-docx库(六)、使用unoconv和LibreOffic......
  • 网站视频如何下载,如何在最短的时间内下载m3u8文件中的ts文件,并将其合并成MP4格式的文
    在现实生活中,我是一个二次元爱好者,每当番剧更新时我总会第一时间去观看,但无论是哪个平台,加载视频总是很缓慢,如果你的网络并不是特别好,有时甚至看几秒就卡顿,非常影响观影体验。但有些网站并不支持离线下载,这时候你想要下载视频应该怎么办呢?下面推荐一个解析和下载视频的插件——万......
  • 几种将word/wps文本中的英文/数字设置为Times New Roman格式的方法
        本文将简短介绍一下如何快速将word/wps中既有中文又有英文/数字文本中的英文/数字设置为TimesNewRoman格式,并且中文格式保持不变。    我们很多人在用word写文件、论文和报告时会碰到这种问题,我的正文或者标题部分有中文、英文和数字,中文的格式要求一般......
  • 利用Grounding DINO进行自动标注——目标检测任务——YOLO格式
    关于GroundingDINO的环境搭建可以参考我的以前的博客,链接如下所示如何在Linux上离线部署GroundingDINO-CSDN博客这个博客主要来介绍如何利用GroundingDINO这个项目去进行目标检测的自动化标注。并且给出了相关的代码已经实验验证。1.数据集准备   2.开始实验2.1......
  • 为什么Deep Deterministic Policy Gradient(DDPG)是Deterministic的?到底哪里体现了?和PP
    DeepDeterministicPolicyGradient(DDPG)是“Deterministic”(确定性)的,因为它使用了一个确定性策略网络,而不是像传统的强化学习算法(例如,基于策略梯度的算法)那样使用随机策略网络。具体来说,DDPG使用的是一个确定性策略函数,通常表示为......
  • PDPS的虚拟调试整流程简单版
    1:和PLC虚拟连接【选项------PLC------外部连接------添加Advance】2:PDPS插入cojt/jt文件,【建模-插入组件】【这样可以直接把机械端的设计文件导入】 3:定义机械设备的动作设计,比如气缸的打开/关闭动作【建模-运动学设备-姿态编辑器】 4:定义设备的动作逻辑流程【控件-编辑......
  • VSCode:代码格式化插件
    settings.json文件中添加如下配置并保存 {"workbench.sideBar.location":"left","cssrem.rootFontSize":80,"git.ignoreWindowsGit27Warning":true,"eslint.codeAction.showDocumentation":{"ena......
  • 最完整WordPress教程:从入门到进阶零基础
    目录 01我们可以用WordPress构建哪些网站?02WordPress.com与WordPress.org03WordPress安装04WordPress安装完成后基础操作 你或许听说过WordPress,但并不确定它具体是什么东西。首先来个简单的科普:WordPress是一个广泛使用的开源内容管理系统(CMS),任何人都可以免费使用。......