【dfn序+DP】树

news/2024/11/7 14:37:05/

把一棵树转化成一个序列有三种方法:

dfs序

dfn序(时间戳)

欧拉序

关于这三者的区别,参考这篇博客,讲的超级好!

重谈DFS序、时间戳和欧拉序 - Seaway-Fu - 博客园 (cnblogs.com)

题意:

思路:

看起来是个树形DP,事实上并不是

考虑把整棵树转化成一个序列

为什么要这么转化:把一棵树转化为序列之后,树上很多东西都可以用DS维护了

如果我们用dfn序来表示这棵树,并且按dfn序来一个一个点涂色的话,我们就可以把问题从树上转化到链上,问题也许会简单许多。

我们会发现,如果我们按dfn序涂色,在涂每一个点之前,他的父亲祖父等祖先节点肯定都已经先涂过了(这些点的dfn序都比当前点小),他的兄弟节点(也包括各种或近或远的“堂兄弟”节点)和兄弟节点的子树也许也涂过一些。涂这个点无非是两种选择:涂一种新的颜色,或者涂一种已经用过的颜色。涂一种新的颜色自然是没用过的颜色都可以。而涂一种已经用过的颜色的话,这个点的颜色必须和他父亲的颜色一样,因为这个点到之前的所有点的路径都是要经过它父亲的,如果他和父亲不同色,他和他同色那个点的路径上就不可能所有点颜色都一样,至少他父亲就是不同的。也就是说涂一种已经用过的颜色其实只有一种方案——和父亲相同。

所以我们可以在它的dfn序上DP

由于有限制:只能用K种颜色

因此设dp[i][j]为前i个点,已经用了j种颜色的方案数

转移就很显然了:

Code:

#include <bits/stdc++.h>#define int long longusing namespace std;const int mxn=3e2+10;
const int mod=1e9+7;int N,K;
int dp[mxn][mxn];void solve(){cin>>N>>K;dp[1][1]=K;for(int i=2;i<=N;i++){for(int j=1;j<=K;j++){dp[i][j]=(dp[i-1][j]+dp[i-1][j-1]*(K-j+1)%mod)%mod;}}int ans=0;for(int j=1;j<=K;j++) ans=(ans+dp[N][j])%mod;cout<<ans<<'\n';
}
signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int __=1;//cin>>__;while(__--)solve();return 0;
}

 

 

 


http://www.ppmy.cn/news/74442.html

相关文章

企业数字转型加速器!居然是他!该不会还有人没用上吧?

随着数字化时代的到来和技术的发展&#xff0c;企业数字化转型已经成为全球企业发展的重要趋势。然而&#xff0c;数字化转型的过程却并非一帆风顺&#xff0c;常常因为 IT 复杂度高、开发周期长等问题而遇到许多挑战&#xff0c;这时候低代码开发平台就能够发挥重要作用。 低代…

【Java】IDEA 配置java开发环境(windows)

刚才需要临时运行一个java脚本&#xff0c;java还是2、3年前学的&#xff0c;都忘光了。IDEA 2021还在我电脑装着&#xff0c;进去却忘记了怎么配置java环境&#xff0c;这里复习一下。 文章目录 01 安装 JDK1.1 下载与安装1.2 配置环境变量 02 在IDEA中运行java程序 01 安装 J…

Redis数据结构-SDS

一、SDS&#xff08;Simple Dynamic String&#xff0c;简单动态字符串&#xff09; Redis没有使用C语言传统的字符串表示方式&#xff08;以’\0’结尾的字符数组&#xff09;&#xff0c;而是自己实现了sds的抽象类型&#xff0c;Redis默认使用sds作为字符串的表示。 set ms…

今日的CSS小案例

个人名片&#xff1a; &#x1f60a;作者简介&#xff1a;一名大一在校生&#xff0c;web前端开发专业 &#x1f921; 个人主页&#xff1a;几何小超 &#x1f43c;座右铭&#xff1a;懒惰受到的惩罚不仅仅是自己的失败&#xff0c;还有别人的成功。 &#x1f385;**学习目…

iptables防火墙1

iptables防火墙 iptables概述 Linux 系统的防火墙 &#xff1a;IP信息包过滤系统&#xff0c;它实际上由两个组件netfilter 和 iptables组成。 主要工作在网络层&#xff0c;针对IP数据包。体现在对包内的IP地址、端口、协议等信息的处理上。 netfilter/iptables 关系&#xf…

webmsxyw x-s分析

近期又更新了&#xff0c;先是改了x-s生成&#xff0c;然后又加上了a1校验。 后面可能会全参校验&#xff0c;比如再加上gid、deviceId、profileData、x-s-common、smidV2之类。 估计以后不能写了&#xff0c;大家且看且珍惜吧。之前相关的文章都被下架了 危&#xff01; 文…

(二十六)ATP应用测试平台——将一个微服务打包成含skywalking链路追踪的docker镜像

前言 延续前面的章节内容&#xff0c;本节内容我们以ht-atp的springboot应用为例&#xff0c;封装一个包含skywalking链路追踪的微服务docker应用。完成服务调用的链路追踪监控。skywalking采用字节码注入的方式实现代码的无侵入&#xff0c;探针采集数据粒度粗&#xff0c;但…

人大金仓KingBase-跨库连表查询(可参考修改)

使用dblink首先要去调用和被调用两个服务的库里执行dblink的创建语句 create extension if not exists dblink; 目前只测试了dblink的方式,business服务和user服务之间有跨库的连表操作,但是一般直接指定库名.模式.表明去连表,肯定会报错 com.kingbase8.util.KSQLException: 错…