【BZOJ】1369: [Baltic2003]Gem 树形dp
来源:互联网 发布:红字知乎 编辑:程序博客网 时间:2024/06/05 20:28
Description
给出一棵树,要求你为树上的结点标上权值,权值可以是任意的正整数 唯一的限制条件是相临的两个结点不能标上相同的权值,要求一种方案,使得整棵树的总价值最小。
Input
先给出一个数字N,代表树上有N个点,N<=10000下面N-1行,代表两个点相连
Output
最小的总权值
Sample Input
10
7 5
1 2
1 7
8 9
4 1
9 7
5 6
10 2
9 3
7 5
1 2
1 7
8 9
4 1
9 7
5 6
10 2
9 3
Sample Output
14
题解:
这个题事实上需要的染色数非常少,hzwer学长说大约4就可以。可能可以用一棵宽度非常大的树来卡一下。但是听说这题数据比较水。所以直接树形dp即可。
dp[i][j]表示i节点为根的子树满足条件的情况下,染色为j(j为颜色编号)的权值。
只需要遍历i的所有直系儿子然后把除了跟当前枚举的颜色相同的情况以外其他的权值取一个最小的再加上去就可以了。
#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>using namespace std;const int MAXN=10001;const int INF=1e9;struct xx{int from,to,nxt;}e[MAXN<<1];int father[MAXN],head[MAXN<<1],cnt,n,m;int dp[MAXN][11];int mini;inline int add(int x,int y){cnt++;e[cnt].from=x;e[cnt].to=y;e[cnt].nxt=head[x];head[x]=cnt;}void build(int x){int i;for(i=1;i<=10;i++)dp[x][i]=i;for(i=head[x];i;i=e[i].nxt){if(e[i].to==father[x]) continue;father[e[i].to]=x;build(e[i].to);}for(int k=1;k<=10;k++){for(i=head[x];i;i=e[i].nxt){mini=INF;if(e[i].to==father[x]) continue;for(int j=1;j<=10;j++)if(j==k) continue;else mini=min(mini,dp[e[i].to][j]);dp[x][k]+=mini;}}}int main(int argc, char *argv[]){int i,j,x,y;int ans=INF;scanf("%d",&n);for(i=1;i<n;i++)scanf("%d%d",&x,&y),add(x,y),add(y,x);build(1);for(i=1;i<=10;i++)ans=min(ans,dp[1][i]);printf("%d\n",ans);return 0;}
0 0
- 【BZOJ】1369: [Baltic2003]Gem 树形dp
- 【bzoj1369】【Baltic2003】【Gem】【树形dp】
- 【bzoj1369】[Baltic2003]Gem 树形dp
- BZOJ1369: [Baltic2003]Gem 树形DP
- 【bzoj1369】[Baltic2003]Gem dp
- 1369: [Baltic2003]Gem
- [bzoj1369][Baltic2003]Gem(树上dp)
- BZOJ 1369 树形DP
- [BZOJ1369] [Baltic2003]Gem
- bzoj 1369(树形dp)
- BZOJ 2152 (树形DP)
- bzoj 3037(树形DP)
- bzoj 4027 树形dp
- bzoj 3573(树形DP)
- bzoj 4254 树形dp
- BZOJ 4033 树形DP
- BZOJ 3037 创世纪 树形DP
- BZOJ 3004 吊灯 树形DP
- 【poj3225】Help with Intervals
- SQLServer扩展存储过程实现远程备份与恢复
- 在JSP中配置FCKeditor 2.6.4
- Razor语法整理
- BZOJ4104 [Thu Summer Camp 2015]解密运算
- 【BZOJ】1369: [Baltic2003]Gem 树形dp
- 配置andaroid ndk笔记
- JAVA SE 学习第六天
- 【opencv练习32 - 查找轮廓】
- 数据库组合查询与联接
- 【工控机开发】debian下安装QT及Opencv
- tesseract識別OPENCV PIL之間轉換例子
- 使用R语言进行图像分类
- 2016aws0908 亚马逊云 回顾