题干:

shy有一颗树,树有n个结点。有k种不同颜色的染料给树染色。一个染色方案是合法的,当且仅当对于所有相同颜色的点对(x,y),x到y的路径上的所有点的颜色都要与x和y相同。请统计方案数。

输入描述:

第一行两个整数n,k代表点数和颜色数;
接下来n-1行,每行两个整数x,y表示x与y之间存在一条边;

输出描述:

输出一个整数表示方案数(mod 1e9+7)。

示例1

输入

复制

4 3
1 2
2 3
2 4

输出

复制

39

备注:

对于30%的数据,n≤10, k≤3;
对于100%的数据,n,k≤300。

解题报告:

一句话题解:因为树上的任意两个点都是可以两两联通的,而染色的过程就是构造联通快的过程,即将一颗树拆分成若干子树。

其实分析一下就是求个连通块(每一个子树都当成一个连通块,最后然你求构成连通块的方案数,,所以这题边的读入根本无所谓,我们不去关心,,因为就算树不是同一种状态,,但是因为染色使用的颜色数和每种颜色对应染的节点数只要相同,我们就认为是一种相同的方案。)

dp[i][j]表示用i个点染j种颜色的方案数。状态转移:选择新开一个颜色,或者和上一个节点用一个颜色(也就是:在一个连通块内,不在一个连通块内。)

AC代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<map>
#include<vector>
#include<set>
#include<string>
#include<cmath>
#include<cstring>
#define ll long long
#define pb push_back
#define pm make_pair
#define fi first
#define se second
using namespace std;
const int MAX = 2e5 + 5;
const ll mod = 1e9+7;
ll dp[505][505];
int main()
{int n,k;cin>>n>>k;for(int a,b,i = 1; i<=n-1; i++) {scanf("%d%d",&a,&b);} for(int i = 1; i<=n; i++) {for(int j = 1; j<=k; j++) {if(i==1 &&j==1) dp[i][j]=k;else  dp[i][j] = (dp[i-1][j] + dp[i-1][j-1] * (k-(j-1)))%mod;}}ll ans = 0;for(int j = 1; j<=k; j++) {ans = (ans + dp[n][j])%mod;}printf("%lld\n",ans);return 0 ;}

【牛客 - 2B】树(思维,dp,有坑)相关推荐

  1. 【牛客】树的距离 树上主席树

    [牛客]树的距离 树上主席树 题意 思路 Code(709MS) 传送门: 题意 给 一 颗 树 , 求 以 x 为 子 树 中 , 距 离 x 大 于 等 于 k 的 点 与 x 的 距 离 和 . ...

  2. 牛客 contest897 C-Latale(树上dp)

    题意 N个节点的树,每条边有条权值,问有多少个点对(U,V)(U, V)(U,V),使得UUU到VVV的距离是3的倍数. 思路 dfs1dfs1dfs1处理每个节点包含子树的dis[dis[%3 = ...

  3. 牛客 游戏(概率DP)

    B-游戏_牛客挑战赛59_牛客网 #include<bits/stdc++.h> typedef long long ll; using namespace std; const int ...

  4. 牛客网——流星雨(dp)

    链接:https://ac.nowcoder.com/acm/contest/547/D 来源:牛客网 题目描述 英仙座流星雨(学名Perseids)是以英仙座γ星附近为辐射点出现的流星雨,也称英仙座 ...

  5. 牛客wannafly27 C 树形dp

    Description "你,你认错人了.我真的,真的不是食人魔."–蓝魔法师 给出一棵树,求有多少种删边方案,使得删后的图每个连通块大小小于等于k,两种方案不同当且仅当存在一条边 ...

  6. 牛客 - Connie(AC自动机+dp/KMP+dp)

    题目链接:点击查看 题目大意:给出一个匹配串 sss,现在问模式串 ttt 的期望得分.其中假设匹配串在模式串中的出现次数为 xxx,那么将得到 2x2^x2x 的分数 题目分析:涉及到了期望一开始还 ...

  7. 牛客 - Shortest Common Non-Subsequence(dp+序列自动机)

    题目链接:点击查看 题目大意:根据最长公共子序列抛出一个新定义," 最短非公共子序列 ",假设给定了字符串 s1 和 s2,设 s 为 s1 和 s2 的"最短非公共子序 ...

  8. 牛客 - Gaming with Mia(dp)

    题目链接:点击查看 题目大意:给出一个长度为 n 的序列,每个元素只由 -1 , 0 , 1 组成,现在要求在相邻两个元素之间添加一个符号,共添加 n - 1 个符号,符号可以选择加号或乘号,问如何选 ...

  9. 牛客 - 树上博弈(思维)

    题目链接:点击查看 题目大意:给出一棵树,现在有两个人在玩一个游戏,两人依次在树上行走,只能走没有人的结点,无法行走的人失败,题目需要我们求出有多少个初始点对,对于先手而言是必胜的情况 题目分析:其实 ...

最新文章

  1. Java面向对象之继承,方法重写,super关键字,员工类系列继承题
  2. 网站如何获得优质链接
  3. oracle_plseq客户端中文乱码
  4. java程序员的NodeJS初识篇
  5. ITK:打印顶点邻居
  6. 步进电机s型加减速计算工具_步进电机噪音和振动的原因分析及应对策略
  7. 双精度浮点数转换_模型压缩一半,精度几乎无损,TensorFlow推出半精度浮点量化工具包,还有在线Demo...
  8. cmd管道无法接收特定程序返回值_CQRS amp; Event Sourcing — 解决检索应用程序状态问题的一剂良方...
  9. nyoj--860--又见01背包--01背包的变形
  10. 第二章 C++对C的改进和扩展
  11. Atitit uke协会产业分类法 艾提拉产业分类法五大类法 目录 1. 配第-克拉克定理概述 产业趋势 有形财物的生产转向无形的服务性生产 1 1.1. 农工商趋势法 1 1.2. 1940年,英
  12. 用verilog实现一个 一位全加器
  13. 文件分割方式 模仿hadoop手写一个工作原理 模仿hadoop filesplit任意切片
  14. javaktv点歌系统项目(java点歌系统)java点歌管理系统
  15. 点线面的特点_描述点线面状事物分布特征
  16. 高版本IE浏览器(IE8、IE9)查看网页Applet问题解决方案
  17. R语言入门——NA、NAN、Inf(缺失值的识别)
  18. pygame-KidsCanCode系列jumpy-part0-使用sprite
  19. HUAWEI篇 NGFW与AR网关建立GRE over IPSec隧道
  20. 求购(计算机专业自考本科书籍一套080901)

热门文章

  1. 无法打开计算机上的event log服务,Win7系统下启用Windows event log服务发生4201错误的正确解决方法...
  2. java socket编程聊天室_Java Socket通信之聊天室功能
  3. linux配置服务器超时退出,Linux下实现不活动用户登录超时后自动登出
  4. 1195C. Basketball Exercise
  5. 835. Trie字符串统计
  6. 电力电子技术 matlab仿真指导,在_电力电子技术_课程教学中展开Matlab仿真训练_唐贤伦...
  7. @Autowired和构造方法执行的顺序解析
  8. dncnn图像去噪_一种基于DnCNNs改进的图像降噪方法与流程
  9. python的模块导入问题_python导入模块错误怎么解决
  10. python清空列表_Python之列表