【codeforces Manthan, Codefest 17 C】Helga Hufflepuff's Cup
【链接】h在这里写链接
【题意】
1<=k<=m;
和k相邻的点的分数只能小于k;
n个点的树,问你每个点的分数的安排,方案数%1e9+7
【题解】
f[i][j][0];//这棵子树下面有j个最高级别的点,这个点放Top点的方案数
f[i][j][1];//这棵子树下面有j个最高级别的点,这个点放小于等于k-1的点的方案数
f[i][j][2];//这棵子树下面有j个最高级别的点,这个点放大于k的点的方案数
叶子节点
f[i][1][0] = 1;
f[i][0][1] = k-1;
f[i][0][2] = m - k;
然后进行转移
for (int i = limit; i >= 0; i--)//枚举x节点它的重要节点个数
{
//这里的i必须是逆序的,这样才可保证f[x][i-j]访问到的是x这个节点前面
//的儿子的方案数
//显然也必须用3个temp->s0,s1,s2来暂存到这个儿子为止的 f[x][]信息了。
//之后再复制给temp就好
ll s0 = 0, s1 = 0, s2 = 0;
for (int j = 0; j <= i; j++)//枚举y的重要节点个数
{
//x这个节点放重要节点方案
if (i != j) s0 += f[y][j][1] * f[x][i - j][0]%MOD;
//这里的f[x][i-j][0]指的是x这个节点前面的儿子的方案
s0 %= MOD;
//y只能放小于等于k-1的了
s1 += (f[y][j][0] + f[y][j][2] + f[y][j][1])%MOD*f[x][i - j][1]%MOD;
s1 %= MOD;
//x放小于等于k-1的,则y可以放Top点也可以放大于K的点也可以放小于k的
s2 += (f[y][j][1] + f[y][j][2])%MOD* f[x][i - j][2]%MOD;
s2 %= MOD;
//x放大于K的点,y能放大于k以及小于等于k-1的点
}
f[x][i][0] = s0;
f[x][i][1] = s1;
f[x][i][2] = s2;
}
最后对f[1][0..x][0..2]求和
【错的次数】
【反思】
【代码】
#include <bits/stdc++.h>
#define ll long long
using namespace std; const int N = 1e5;
const int MOD = 1e9 + 7;
const int X = 10; int n, m,k,limit;
ll f[N + 10][X+5][3];
vector<int> g[N+10]; void dfs(int x, int fa)
{
//叶子节点
f[x][1][0] = 1;
f[x][0][1] = k - 1;
f[x][0][2] = m - k;
for (int y : g[x])
{
if (y == fa) continue;
dfs(y, x);
//前面的儿子选了j个,状态为3的方案数
//f[x][j][3]
for (int i = limit; i >= 0; i--)//枚举x节点它的重要节点个数
{
ll s0 = 0, s1 = 0, s2 = 0;
for (int j = 0; j <= i; j++)//枚举y的重要节点个数
{
//x这个节点放重要节点方案
if (i != j) s0 += f[y][j][1] * f[x][i - j][0]%MOD;
s0 %= MOD;
//y只能放小于等于k-1的了 s1 += (f[y][j][0] + f[y][j][2] + f[y][j][1])%MOD*f[x][i - j][1]%MOD;
s1 %= MOD;
//x放小于等于k-1的,则y可以放Top点也可以放大于K的点也可以放小于k的 s2 += (f[y][j][1] + f[y][j][2])%MOD* f[x][i - j][2]%MOD;
s2 %= MOD;
//x放大于K的点,y能放大于k以及小于等于k-1的点
}
f[x][i][0] = s0;
f[x][i][1] = s1;
f[x][i][2] = s2;
}
}
} int main()
{
//freopen("F:\\rush.txt", "r", stdin);
scanf("%d%d", &n, &m);
for (int i = 1; i <= n - 1; i++)
{
int x, y;
scanf("%d%d", &x, &y);
g[x].push_back(y), g[y].push_back(x);
}
scanf("%d%d", &k, &limit);
dfs(1, 0);
ll ans = 0;
for (int i = 0; i <= limit; i++)
{
for (int j = 0; j < 3; j++)
{
ans = ans + f[1][i][j];
ans %= MOD;
}
}
printf("%lld\n", ans);
return 0;
}
【codeforces Manthan, Codefest 17 C】Helga Hufflepuff's Cup的更多相关文章
- 【CF Manthan, Codefest 17 B】Marvolo Gaunt's Ring
[链接]h在这里写链接 [题意] 给你n个数字; 让你在其中找出三个数字i,j,k(i<=j<=k); 使得p*a[i]+q*a[j]+r*a[k]最大; [题解] /* 有一个要 ...
- 【CF Manthan, Codefest 17 A】Tom Riddle's Diary
[链接]h在这里写链接 [题意] 在这里写题意 [题解] /* Be careful. 二重循环枚举 */ [错的次数] 0 [反思] 在这了写反思 [代码] #include <bits/st ...
- 【DP】【CF855C】 Helga Hufflepuff's Cup
Description 给你一个树,可以染 \(m\) 个颜色,定义一个特殊颜色 \(k\) , 要求保证整棵树上特殊颜色的个数不超过 \(x\) 个.同时,如果一个节点是特殊颜色,那么它的相邻节点的 ...
- Manthan, Codefest 17
A. Tom Riddle's Diary time limit per test 2 seconds memory limit per test 256 megabytes input standa ...
- Helga Hufflepuff's Cup CodeForces - 855C
Helga Hufflepuff's Cup CodeForces - 855C 题意:给一棵n个节点的树,要给每一个节点一个附加值,附加值可以为1-m中的一个整数.要求只能有最多x个节点有附加值k. ...
- Codeforces 855C - Helga Hufflepuff's Cup
855C - Helga Hufflepuff's Cup 题意 要求构建一棵树,树上至多可以存在 \(x\) 个权值为 \(k\) 的重要点,且与重要点连边的点的权值必须小于 \(k\),问有多少种 ...
- C. Helga Hufflepuff's Cup 树形dp 难
C. Helga Hufflepuff's Cup 这个题目我感觉挺难的,想了好久也写了很久,还是没有写出来. dp[i][j][k] 代表以 i 为根的子树中共选择了 j 个特殊颜色,且当前节点 i ...
- 【codeforces.com/gym/100240 J】
http://codeforces.com/gym/100240 J [分析] 这题我搞了好久才搞出样例的11.76....[期望没学好 然后好不容易弄成分数形式.然后我‘+’没打..[于是爆0... ...
- 【Codeforces Global Round 1 C】Meaningless Operations
[链接] 我是链接,点我呀:) [题意] 给你一个a 让你从1..a-1的范围中选择一个b 使得gcd(a^b,a&b)的值最大 [题解] 显然如果a的二进制中有0的话. 那么我们就让选择的b ...
随机推荐
- T2988 删除数字【状压Dp+前缀和优化】
Online Judge:从Topcoder搬过来,具体哪一题不清楚 Label:状压Dp+前缀和优化 题目描述 给定两个数A和N,形成一个长度为N+1的序列,(A,A+1,A+2,...,A+N-1 ...
- 牛客NOIP暑期七天营-TG1 赛后题解
目录 牛客NOIP暑期七天营-提高组1 A-最短路 题目描述 link 题解 代码 B-最小生成链 题目描述 link 题解 代码 C-最小字典最短路 题目描述 link 题解 Update 牛客NO ...
- mysql导入数据
1.准备sql文件:第一句话就是指定要操作的数据库,然后是insert语句,或者update语句或者delete语句 2.登录数据库,并执行: source sql文件位置 不要直接 ...
- skyline中遍历fly工程树
在skyline二次开发过程中,做空间分析总是要去读取工程中的shp图层.假设想获取工程树中“建筑物”图层,图层结构如下: 传统的方法是: var itemId=SGWorld.ProjectTree ...
- Delphi 设计模式:《HeadFirst设计模式》Delphi2007代码---单例模式之ChocolateBoiler[转]
1 2{<HeadFirst设计模式>之单例模式 } 3{ 编译工具: Delphi2007 for win32 } 4{ E-Mail : guzh-0417@163.com ...
- Docker学习入门
Docker简介: Docker 包括三个基本概念 镜像(Image) 容器(Container) 仓库(Repository) 理解了这三个概念,就理解了 Docker 的整个生命周期. Docke ...
- [Day1] 初识Nginx
一. Nginx的诞生 Nginx是一个高效的web及反向代理服务器,它的第一版发布于2012年,晚于如今占据最大市场份额的Apache.那么Nginx的诞生肩负了哪些使命呢?或者说它于Apache的 ...
- this的五种指法
this 到底指向哪里 以下如果没提及,则为严格模式. js中作用域有两种: 词法作用域 动态作用域 词法作用域 词法作用域指在书写代码时就被确定的作用域.看如下代码 var value = 1; f ...
- Tomcat服务器的安装及配置
学习目标: 了解Tomcat服务器的主要作用 掌握Tomcat服务器的安装与配置 掌握Tomcat安装目录下主要文件夹的作用 jsp的执行流程 1.Web的工作原理流程图:从图中可以看出Tomcat服 ...
- SSM11-solr服务的搭建
1. Solr服务搭建 1.1. Solr的环境 Solr是java开发. 需要安装jdk. 安装环境Linux. 需要安装Tomcat. 1.2. 搭建步骤 第一步:把solr 的压缩包上传到Li ...