【dfn序+DP】树

news2024/11/17 20:28:31

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

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 long

using 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.coloradmin.cn/o/554859.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【SpringBoot】七:Web服务---Servlet Filter Listener

文章目录 1.Servlet1.1 使用WebServlet创建Servlet1.2 使用编码方式创建Servlet 2.Filter2.1 使用WebFilter创建Filter2.2 使用编码方式创建Filter2.3 Filter排序2.4 使用框架中的 Filter 3. Listener 1.Servlet 1.1 使用WebServlet创建Servlet (1)编写servlet WebServlet(…

数仓建模理论

一、数仓建模理论 &#xff08;一&#xff09;前言 数仓建模就好比是图书馆的书能够分门别类的存放&#xff0c;不仅合理&#xff0c;齐全&#xff0c;而且易于查找。 数据模型就是数据组织和存储方法&#xff0c;强调从业务、数据存取和使用角度合理存储数据。只有将数…

数据结构课程设计——航空客运订票系统

航空客运订票系统 一、引言 1.1 问题的提出 随着时代的发展&#xff0c;智能化生产给社会带来方便与精确&#xff0c;本系统以方便大众&#xff0c;妥善管理机场票务操作为基旨而开发。 本程序以数据结构&#xff08;c语言描述)存储结构进行开发。利用单链表等存储方式为基础…

字节技术面都过了,薪资都谈好了20K*13结果还是被刷了,问HR,原因是。。

面试被拒开端 分享下自己的求职小故事。在一家公司软件测试技术面试已经过了&#xff0c;然后和最终面试官沟通了下&#xff0c;面试官提出来一个薪资数字&#xff0c;我接受了这个提议并和hr同步了这个数字。再然后被拒了&#xff0c;理由就是期望薪资和职级不匹配。我询问后…

鸿蒙元服务万能卡片开发-stage模型和fa模型的卡片区别

一、项目类型 Application&#xff1a; 应用开发 Atomic Service&#xff1a;原子化服务开发 这里选择Empty Ability模板创建项目。 二、Stage模型卡片开发 Api&#xff1a;9 Model&#xff1a;stage Language&#xff1a;ArkTS AppScope &#xff1a;应用的全局配置信息。…

Flutter非常常用的几个布局小控件Center,SizeBox,Divider

Center简介 Center是Flutter中的一个布局小部件&#xff0c;用于将其子部件居中显示在父部件中。 Center的特点 Center小部件具有以下特点&#xff1a; 将子部件在水平和垂直方向上居中显示。默认情况下&#xff0c;Center会尽可能将子部件展开以填充可用空间。如果Center没…

docker未授权rce+docker逃逸复现

docker未授权rcedocker逃逸复现 前言&#xff1a;这段时间跟着bnessy师傅一起打内网&#xff0c;跟着bnessy师傅也学到了很多有用的姿势&#xff0c;这里就来复现几个内网的漏洞&#xff08;大佬轻喷&#xff09; 1、老规矩&#xff0c;还是fscan扫到的漏洞 通过访问&#xff1…

AI突袭景观设计界,这次是真的卷起来了!

目前&#xff0c;AI已经成为内容创作者的灵感来源和效率工具&#xff0c;从设计、内容、视频等创意性工作中&#xff0c;我们看到AI助力下提升了数倍效率&#xff0c;正是如此&#xff0c;也迎来了更多企业的关注&#xff0c;想要将AI融入到各行各业中。 神采PromeAI在不断更新…

Mybatis源码

Mybatis简介 持久层ORM框架&#xff0c;执行sql比较简单&#xff0c;扩展性强&#xff0c;与传统jdbc相比&#xff0c;省去了手写连接的几个步骤&#xff0c;可以通过配置。 节约数据库连接资源&#xff0c;代码易于维护。mybatis 在SqlMapConfig.xml 中配置数据库连接池&#…

【服务器数据恢复】raid离线磁盘上线失败导致分区不识别的数据恢复

服务器数据恢复环境&#xff1a; HP ProLiant DL某系列服务器&#xff0c;三块SAS硬盘组建raid阵列。 上层系统部署有数据库&#xff0c;数据库存放在D分区&#xff0c;备份存放在E分区。 服务器故障&#xff1a; 磁盘故障导致RAID瘫痪&#xff0c;其中一块硬盘状态灯显示红色…

接口测试:Eolink Apikit 和 Postman 哪个更好用?

接口测试&#xff1a;Eolink Apikit 和 Postman 哪个更好用&#xff1f; 很多做服务端开发的同学&#xff0c;应该基本都用过 Postman 来测试接口&#xff0c;虽然 Postman 能支撑日常工作&#xff0c;但是总感觉还是少了点什么&#xff0c;比如需要 Swagger 来维护接口文档&am…

故障分析 | innodb_thread_concurrency 导致数据库异常的问题分析

作者通过分析源码定位数据库异常&#xff0c;梳理参数 innodb_thread_concurrency 设置的注意事项。 作者&#xff1a;李锡超 一个爱笑的江苏苏宁银行数据库工程师&#xff0c;主要负责数据库日常运维、自动化建设、DMP 平台运维。擅长 MySQL、Python、Oracle&#xff0c;爱好骑…

【coding加油站】vue单页面手机商城设计

1、引言 设计结课作业,课程设计无处下手&#xff0c;网页要求的总数量太多&#xff1f;没有合适的模板&#xff1f;数据库&#xff0c;java&#xff0c;python&#xff0c;vue&#xff0c;html作业复杂工程量过大&#xff1f;毕设毫无头绪等等一系列问题。你想要解决的问题&am…

【Python】判断语句 ② ( if else 语句 | if else 语句语法 | Python 中的空格缩进 | 代码示例 )

文章目录 一、if else 语句语法二、Python 中的空格缩进三、代码示例 一、if else 语句语法 if else 语句语法 : if 条件判定:满足条件要执行的代码1满足条件要执行的代码2满足条件要执行的代码3 else:不满足条件要执行的代码1不满足条件要执行的代码2不满足条件要执行的代码3…

佳能打印机删掉又会自动加载的原因及解决方案

驱动人生分析出现佳能打印机删掉又会自动加载的原因可能是因为在系统中&#xff0c;存在着佳能打印机的自动驱动程序。将打印机删除后&#xff0c;系统会自动重新安装该驱动程序&#xff0c;导致打印机重新加载。 特别在一台新的佳能打印机设备到位时&#xff0c;也会出现电脑…

2023自动化测试工具还有什么新鲜事?

我们准备了一份详细指南&#xff0c;介绍了在一个好的测试自动化工具中应该寻找什么&#xff0c;以及哪些工具在 2023 年值得考虑。 尽管手动测试仍然是软件质量保证的强大工具&#xff0c;正如我们在最近关于手动测试与自动测试的长期阅读中再次确立的那样&#xff0c;越来越…

1700页,卷S人的 软件测试《八股文》PDF手册,涨薪跳槽拿高薪就靠它了

大家好&#xff0c;最近有不少小伙伴在后台留言&#xff0c;又得准备面试了&#xff0c;不知道从何下手&#xff01; 不论是跳槽涨薪&#xff0c;还是学习提升&#xff01;先给自己定一个小目标&#xff0c;然后再朝着目标去努力就完事儿了&#xff01; 为了帮大家节约时间&a…

【Linux】权限管理,谁动了我代码?!

目录 一&#xff0c;shell命令以及运行原理 二 &#xff0c;Linux用户权限 1. su —— 用户切换 三&#xff0c;权限管理 1. 理解 2. 用户 3. 文件类型 4. 文件基本权限 5. 设置文件权限方法 1. chmod —— 修改文件访问权限 2. chown —— 修改文件拥有者 3. chg…

2023年5大风口行业

今天就来和大家分享一下&#xff0c;在时代的洪流下&#xff0c;普通人如何顺应大势抓住机遇&#xff01; 实现人在风口上&#xff0c;猪都会飞起来。 根据对市场的观察及各平台数据分析结果&#xff0c;小编总结了了2023年将会迎来大爆发的5个行业&#xff0c;带大家看看新的…

最近公司招人面试了一位5年的测试,一问三不知,最后还反怼我...

最近看了很多简历&#xff0c;很多候选人年限不小&#xff0c;但是做的都是一些非常传统的项目&#xff0c;想着也不能通过简历就直接否定一个人&#xff0c;何况现在大环境越来 越难&#xff0c;大家找工作也不容易&#xff0c;于是就打算见一见。 在沟通中发现&#xff0c;由…