BZOJ1369:[Baltic2003]Gem(树形DP)
Description
Input
Output
Sample Input
7 5
1 2
1 7
8 9
4 1
9 7
5 6
10 2
9 3
Sample Output
14
Solution
结论题。权值标号不会大于$log2(n)$。
Code
#include<iostream>
#include<cstdio>
#include<cmath>
#define N (10009)
using namespace std; struct Edge{int to,next;}edge[N<<];
int n,u,v,f[N][],ans=1e9,LOG2,head[N],num_edge; void add(int u,int v)
{
edge[++num_edge].to=v;
edge[num_edge].next=head[u];
head[u]=num_edge;
} void Dfs(int x,int fa)
{
for (int v1=; v1<=LOG2; ++v1) f[x][v1]=v1;
for (int i=head[x]; i; i=edge[i].next)
if (edge[i].to!=fa)
Dfs(edge[i].to,x);
for (int v1=; v1<=LOG2; ++v1)
{
for (int i=head[x]; i; i=edge[i].next)
if (edge[i].to!=fa)
{
int minn=1e9;
for (int v2=; v2<=LOG2; ++v2)
if (v2!=v1) minn=min(minn,f[edge[i].to][v2]);
f[x][v1]+=minn;
}
}
} int main()
{
scanf("%d",&n);
LOG2=ceil(log10(1.0*n)/log10(2.0));
for (int i=; i<=n-; ++i)
scanf("%d%d",&u,&v), add(u,v), add(v,u);
Dfs(,);
for (int i=; i<=LOG2; ++i) ans=min(ans,f[][i]);
printf("%d\n",ans);
}
BZOJ1369:[Baltic2003]Gem(树形DP)的更多相关文章
- 【bzoj1369】[Baltic2003]Gem 树形dp
题目描述 给出一棵树,要求你为树上的结点标上权值,权值可以是任意的正整数 唯一的限制条件是相临的两个结点不能标上相同的权值,要求一种方案,使得整棵树的总价值最小. 输入 先给出一个数字N,代表树上有N ...
- 【BZOJ-1369】Gem 树形DP
1369: [Baltic2003]Gem Time Limit: 2 Sec Memory Limit: 64 MBSubmit: 282 Solved: 180[Submit][Status] ...
- BZOJ 1369: [Baltic2003]Gem(树形dp)
传送门 解题思路 直接按奇偶层染色是错的,\(WA\)了好几次,所以要树形\(dp\),感觉最多\(log\)种颜色,不太会证. 代码 #include<iostream> #includ ...
- BZOJ_1369_[Baltic2003]Gem_树形DP
BZOJ_1369_[Baltic2003]Gem_树形DP Description 给出一棵树,要求你为树上的结点标上权值,权值可以是任意的正整数 唯一的限制条件是相临的两个结点不能标上相同的权值, ...
- BZOJ1369/LG4395 「BOI2003」Gem 树形DP
问题描述 LG4395 BZOJ1369 题解 发现对于结点 \(x\) ,其父亲,自己,和所有的孩子权值不同,共 \(3\) 类,从贪心的角度考虑,肯定是填 \(1,2,3\) 这三种. 于是套路树 ...
- [bzoj1369][Baltic2003]Gem_树形dp_结论题
Gem bzoj-1369 Baltic-2003 题目大意:给你一棵树,让你往节点上添自然数,使得任意相邻节点的数不同且使得权值最小. 注释:n为结点个数,$1\le n\le 10^3$. 想法: ...
- bzoj 1369: Gem 树形dp
题目大意 给出一棵树,要求你为树上的结点标上权值,权值可以是任意的正整数 唯一的限制条件是相临的两个结点不能标上相同的权值,要求一种方案,使得整棵树的总价值最小.N<=10000 题解 我们可以 ...
- [BOI2003] Gem - 树形dp
结论 不同颜色数不会超过 \(O(\log n)\) 然后就是很简单的树形dp了 顺便复习一下树形dp怎么写 #include <bits/stdc++.h> using namespac ...
- [bzoj1369] [Baltic2003]Gem
结论题...一棵树里用到的颜色数不超过logn.. f[i][j]表示以i为根的子树里,i的颜色是j的方案数. g[i][j]表示max{f[i][k]},(k!=j #include<cstd ...
随机推荐
- Redis 的 Lua 脚本支持
Redis 2.6.0 内置的Lua Script支持,可以在Redis的Server端一次运行大量逻辑. 整个Script默认是在一个事务里的. Script里涉及的所有Key尽量用变量,从外面传入 ...
- UVA 562(01背包)
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=114&page=s ...
- MYSQL-EXPLAIN 命令详解 (转载)
EXPLAIN 命令详解 在工作中,我们用于捕捉性能问题最常用的就是打开慢查询,定位执行效率差的SQL,那么当我们定位到一个SQL以后还不算完事,我们还需要知道该SQL的执行计划,比如是全表扫描, ...
- 0 test classes found in package in XXXX
除了参考其他的方法,要注意XXXX位置下是否有空文件夹,删掉.
- input textarea监听鼠标粘贴
发现一个问题,在input/textarea中如果是鼠标粘贴内容进去,发现判断不了value的改变,html代码如下: <!doctype html> <html> <h ...
- JavaScript 工具库:Cloudgamer JavaScript Library v0.1 发布
JavaScript 工具库:Cloudgamer JavaScript Library v0.1 发布 研究了一年多的js,也差不多写一个自己的js库了.我写这个不算框架,只是一个小型的js工具 ...
- 02.CSS选择器-->:focus
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- react项目跨域问题
在用知乎写demo的时候碰到了跨域问题 解决跨域如下: 跨域代理解决 "proxy":"https://news-at.zhihu.com", 请求的时候, ...
- JS 计算时间差,(引入外部字体文件)
JavaScript Date() 对象: new Date() :时间对象,会把当前时间作为其初始值: setFullYear() :用于设置月份,可有三个参数,setFullYear(year,m ...
- C# 按部门拆分excel文件
按照所属部门不同将excel文件拆分成多个文件 string excel_path = @"G:\zhyue\backup\2018-08-01 读取腾讯邮箱接口-获取一个月内未接收到外部邮 ...