题目传送门:bzoj1369

  这题其实有个结论:节点数为n的树,对其染色使相邻节点颜色不同,且总颜色权值最小,所需的颜色数量是$ O(\log n) $的。

  所以我们就可以愉快的dp了:$ f[i][j] $表示处理到以$ i $为根的子树,根节点颜色为$ j $的最小总价值,然后就可以随便转移了。

  代码:

#include<cstdio>
#include<cstring>
#define maxn 10010
struct edge{
int to,nxt;
}e[*maxn];
int fir[maxn],f[maxn][];
int n,tot=;
void add(int x,int y){e[tot].to=y; e[tot].nxt=fir[x]; fir[x]=tot++;}
void dfs(int now,int fa)
{
for(int i=fir[now];~i;i=e[i].nxt)
if(e[i].to!=fa)dfs(e[i].to,now);
for(int i=;i<=;i++){
f[now][i]=i;
for(int j=fir[now];~j;j=e[j].nxt)
if(e[j].to!=fa){
int mn=0x3f3f3f3f;
for(int k=;k<=;k++)
if(k!=i&&f[e[j].to][k]<mn)mn=f[e[j].to][k];
f[now][i]+=mn;
}
}
}
int main()
{
memset(fir,,sizeof(fir)); tot=;
scanf("%d",&n);
for(int i=;i<n;i++){
int x,y;
scanf("%d%d",&x,&y);
add(x,y); add(y,x);
}
dfs(,-);
int ans=0x3f3f3f3f;
for(int i=;i<=;i++)
if(f[][i]<ans)ans=f[][i];
printf("%d\n",ans);
}

bzoj1369

【bzoj1369】[Baltic2003]Gem(树形dp+结论)的更多相关文章

  1. BZOJ1369:[Baltic2003]Gem(树形DP)

    Description 给出一棵树,要求你为树上的结点标上权值,权值可以是任意的正整数 唯一的限制条件是相临的两个结点不能标上相同的权值,要求一种方案,使得整棵树的总价值最小. Input 先给出一个 ...

  2. 【bzoj1369】[Baltic2003]Gem 树形dp

    题目描述 给出一棵树,要求你为树上的结点标上权值,权值可以是任意的正整数 唯一的限制条件是相临的两个结点不能标上相同的权值,要求一种方案,使得整棵树的总价值最小. 输入 先给出一个数字N,代表树上有N ...

  3. 【BZOJ-1369】Gem 树形DP

    1369: [Baltic2003]Gem Time Limit: 2 Sec  Memory Limit: 64 MBSubmit: 282  Solved: 180[Submit][Status] ...

  4. BZOJ 1369: [Baltic2003]Gem(树形dp)

    传送门 解题思路 直接按奇偶层染色是错的,\(WA\)了好几次,所以要树形\(dp\),感觉最多\(log\)种颜色,不太会证. 代码 #include<iostream> #includ ...

  5. BZOJ_1369_[Baltic2003]Gem_树形DP

    BZOJ_1369_[Baltic2003]Gem_树形DP Description 给出一棵树,要求你为树上的结点标上权值,权值可以是任意的正整数 唯一的限制条件是相临的两个结点不能标上相同的权值, ...

  6. BZOJ1369/LG4395 「BOI2003」Gem 树形DP

    问题描述 LG4395 BZOJ1369 题解 发现对于结点 \(x\) ,其父亲,自己,和所有的孩子权值不同,共 \(3\) 类,从贪心的角度考虑,肯定是填 \(1,2,3\) 这三种. 于是套路树 ...

  7. [bzoj1369][Baltic2003]Gem_树形dp_结论题

    Gem bzoj-1369 Baltic-2003 题目大意:给你一棵树,让你往节点上添自然数,使得任意相邻节点的数不同且使得权值最小. 注释:n为结点个数,$1\le n\le 10^3$. 想法: ...

  8. bzoj 1369: Gem 树形dp

    题目大意 给出一棵树,要求你为树上的结点标上权值,权值可以是任意的正整数 唯一的限制条件是相临的两个结点不能标上相同的权值,要求一种方案,使得整棵树的总价值最小.N<=10000 题解 我们可以 ...

  9. [BOI2003] Gem - 树形dp

    结论 不同颜色数不会超过 \(O(\log n)\) 然后就是很简单的树形dp了 顺便复习一下树形dp怎么写 #include <bits/stdc++.h> using namespac ...

随机推荐

  1. [iOS微博项目 - 4.4] - 会员标识

    github: https://github.com/hellovoidworld/HVWWeibo A.会员标识 1.需求 给vip会员打上会员标识 不同等级的vip会员使用不同的标识 使用橙色作为 ...

  2. Notice: Undefined index: wjs_cookie

    w执行顺序. ok <!doctype html> <html> <head> <meta charset="UTF-8"> < ...

  3. 数字货币量化分析报告_20170905_P

    [分析时间]2017-09-05 16:36:46 [数据来源]中国比特币 https://www.chbtc.com/ef4101d7dd4f1faf4af825035564dd81聚币网 http ...

  4. 将vi or vim中的内容复制到terminal中

    1. 查看 vim 是否支持 clipboard 功能 $ vim --version | grep clipboard 2. 如果有 +clipboard 则跳过这一步; 如果显示的是 -clipb ...

  5. 日期格式私人定制——SimpleDateFormat

    [前言] 最近项目需要特殊的日期格式,又恰好是String类型的,以前都没怎么用到SimpleDateFormat这个类去格式化日期,脑子里蹦出来的思路就是先把Date给toString了,然后慢慢切 ...

  6. 007-mac快捷键

    锁屏:Ctrl + Command + Q touch-bar:方法:“系统偏好设置”>“键盘”>“自定Control Strip…”,将“锁定屏幕”图标拖拽到Touch Bar上即可.] ...

  7. IDEA中打包Spark项目提示Error:(16, 48) java: -source 1.5 中不支持 lambda 表达式

    在idea中新建了一Spark的项目,在做项目的编译打包的时候,提示如下错误信息: Error:(, ) java: -source 1.5 中不支持 lambda 表达式 (请使用 -source ...

  8. 基于Hadoop的数据仓库Hive

    Hive是基于Hadoop的数据仓库工具,可对存储在HDFS上的文件中的数据集进行数据整理.特殊查询和分析处理,提供了类似于SQL语言的查询语言–HiveQL,可通过HQL语句实现简单的MR统计,Hi ...

  9. RNNs

    什么是RNN网络? RNNs背后的主要目的是要使用序列本身的顺序信息.在传统的神经网络里,我们假设输入(输出)是条件独立的.但是,在许多任务里,这是个非常非常差的假设.如果你想预测一个序列中的下一个单 ...

  10. libevent基础知识

    在线手册 • 官方网站:http://libevent.org/ • 官方手册:http://www.wangafu.net/~nickm/libevent-book/ • 官方下载:http://s ...