洛谷P4084 [USACO17DEC]Barn Painting G 题解
洛谷P4084 [USACO17DEC]Barn Painting G 题解
题目链接:P4084 [USACO17DEC]Barn Painting G
题意:题意:给定一颗N个节点组成的树,3种颜色,其中K个节点已染色,要求任意两相邻节点颜色不同,求合法染色方案数。
这个题太水了
设 dp[u][1/2/3]dp[u][1/2/3]dp[u][1/2/3] 表示 uuu 结点涂 1/2/31/2/31/2/3 颜色的方案数
根据加法原理,
如果 uuu 已经有颜色了,那么
dp[u][j]=∑dp[v][k]×[k≠j]×[j=val[u]]dp[u][j] = \sum dp[v][k]\times [k\ne j]\times [j=\text{val[u]}] dp[u][j]=∑dp[v][k]×[k=j]×[j=val[u]]
否则
dp[u][j]=∑dp[v][k]×[k≠j]dp[u][j] = \sum dp[v][k]\times [k\ne j] dp[u][j]=∑dp[v][k]×[k=j]
时间复杂度 O(n)O(n)O(n)
代码:
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
using namespace std;
#define int long long
#define INF 0x3f3f3f3f3f3f3f3f
#define N (int)(1e5+15)
const int p=1e9+7;
int n,k;
int val[N],dp[N][4];
vector<int> vec[N];
void add(int &a,int b){a=(a+b%p)%p;}
void mul(int &a,int b){a=a%p*b%p;}
void dfs(int u,int f)
{for(int v : vec[u]){if(v==f)continue;dfs(v,u);for(int i=1; i<=3; i++){int res=0;for(int j=1; j<=3; j++)if(i!=j)add(res,dp[v][j]);mul(dp[u][i],res);}}
}
signed main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);// freopen("check.in","r",stdin);// freopen("check.out","w",stdout);cin >> n >> k;for(int i=1,u,v; i<n; i++){cin >> u >> v;vec[u].push_back(v);vec[v].push_back(u);}for(int i=1; i<=n; i++)for(int j=1; j<=3; j++)dp[i][j]=1;for(int i=1,u; i<=k; i++){cin >> u >> val[u];for(int j=1; j<=3; j++)if(val[u]!=j)dp[u][j]=0;}dfs(1,1);cout << ((dp[1][1]+dp[1][2]+dp[1][3])%p+p)%p << endl;return 0;
}
转载请说明出处
洛谷P4084 [USACO17DEC]Barn Painting G 题解相关推荐
- [洛谷 P4084 USACO17DEC] Barn Painting G (树形dp经典)
[洛谷 P4084 USACO17DEC] Barn Painting G 题目链接 大致题意: 给定一颗N个节点组成的树,3种颜色,其中K个节点已染色,要求任意两相邻节点颜色不同,求合法染色方案数 ...
- 【洛谷P4084】Barn Painting【树形DP】
题目大意: 题目链接:https://www.luogu.org/problemnew/show/P4084 一棵nnn个节点的树上有kkk个点已被染色.求将这棵树染成三种颜色且相邻的节点颜色不同的方 ...
- P4084 [USACO17DEC]Barn Painting
题意翻译 题意:给定一颗N个节点组成的树,3种颜色,其中K个节点已染色,要求任意两相邻节点颜色不同,求合法染色方案数. 翻译贡献者:Il_ItzABC_lI 题目描述 Farmer John has ...
- 信息学奥赛一本通 1379:热浪(heatwv) | 洛谷 P1339 [USACO09OCT]Heat Wave G
[题目链接] ybt 1379:热浪(heatwv) 洛谷 P1339 [USACO09OCT]Heat Wave G [题目考点] 1. 图论:最短路径 [解题思路] 首先抽象建模.城镇为顶点,道路 ...
- 洛谷P5520 [yLOI2019] 青原樱 题解
洛谷P5520 [yLOI2019] 青原樱 题解 题目链接:P5520 [yLOI2019] 青原樱 题意: n n n 个空放 m m m 个物品,两两物品不能直接相邻,至少空一格 纯数学题. 看 ...
- 洛谷P5633 最小度限制生成树 题解
洛谷P5633 最小度限制生成树 题解 题目链接:P5633 最小度限制生成树 题意: 给你一个有 n n n 个节点, m m m 条边的带权无向图,你需要求得一个生成树,使边权总和最小,且满足编号 ...
- 洛谷P2619 [国家集训队]Tree I 题解
洛谷P2619 [国家集训队]Tree I 题解 题目链接:P2619 [国家集训队]Tree I 题意: 给你一个无向带权连通图,每条边是黑色或白色.让你求一棵最小权的恰好有 need\text{n ...
- 洛谷P1282 多米诺骨牌 题解
洛谷P1282 多米诺骨牌 题解 题目链接:P1282 多米诺骨牌 题意: 多米诺骨牌由上下 222 个方块组成,每个方块中有 1∼61\sim61∼6 个点.现有排成行的上方块中点数之和记为 S1S ...
- 洛谷P3237 [HNOI2014]米特运输 题解
洛谷P3237 [HNOI2014]米特运输 题解 题目链接:P3237 [HNOI2014]米特运输 题意: 这题面是真的长啊 qwq 米特是D星球上一种非常神秘的物质,蕴含着巨大的能量.在以米特为 ...
最新文章
- 20行Python代码说清“量子霸权”
- 腾讯云连续四年登上KVM开源贡献榜,两项技术获评年度核心突破
- python3 for循环_从零开始学习PYTHON3讲义(六)for循环跟斐波那契数列
- Block(Closure) Tips
- 比特币Merkle树和SPV机制
- angularjs 结构的两种写法(2)
- uniapp接收服务器消息,【教程】uniapp websocket实现消息推送
- bilibili有电脑版吗_哪个手机便签软件有电脑版?有跨平台的桌面便签软件吗 - 学显...
- DFS走迷宫问题(非最短路径)
- am最新版安装包_am软件下载-am剪辑软件(alight motion)中文版下载v2.3.1-11玩家网
- CloudStack(二)基础网络模式安装部署
- 前端 获取当前页面服务器ip_fiddler获取响应时间以及服务器IP
- CGI与JSP联系与区别
- 【DP + 卖股票】LeetCode 123. Best Time to Buy and Sell Stock III
- 多维数据查询效率分析(2)
- html5svg在线编辑器,HTML5 SVG图形在线编辑器
- 简述商业模式、商业模式画布与商业模式个人画布
- 炫酷的个人主页要怎么制作 ? |GitCode
- 从1到无穷大—机器学习篇
- 数据结构(3)常见的树