[bzoj2060][Usaco2010 Nov]Visiting Cows 拜访奶牛_树形dp
Visiting Cows 拜访奶牛 bzoj-2060 Usaco-2010 Nov
题目大意:题目链接。
注释:略。
想法:看起来像支配集。
只是看起来像而已。
状态:dp[pos][flag]表示以pos为根的子树中,i选(不选)的最大收益。
转移:dp[pos][0]+=max(dp[to[i]][0],dp[to[i]][1]);dp[pos][1]+=dp[to[i]][0]。
最后,附上丑陋的代码... ...
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define N 50010
using namespace std;
int to[N<<2],nxt[N<<2],head[N],tot,dp[N][3];
inline char nc()
{
static char *p1,*p2,buf[100000];
return (p1==p2)&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;
}
int read()
{
int x=0; char c=nc();
while(!isdigit(c)) c=nc();
while(isdigit(c)) x=(x<<3)+(x<<1)+c-'0',c=nc();
return x;
}
inline void add(int x,int y)
{
to[++tot]=y;
nxt[tot]=head[x];
head[x]=tot;
}
void dfs(int pos,int fa)
{
dp[pos][1]=1;
dp[pos][2]=0;
for(int i=head[pos];i;i=nxt[i])
{
if(to[i]==fa) continue;
dfs(to[i],pos);
dp[pos][1]+=dp[to[i]][2];
dp[pos][2]+=max(dp[to[i]][1],dp[to[i]][2]);
}
}
int main()
{
int n=read();
for(int x,y,i=1;i<n;i++) x=read(),y=read(),add(x,y),add(y,x);
dfs(1,1);
printf("%d\n",max(dp[1][1],dp[1][2]));
return 0;
}
小结:树形dp裸题。
[bzoj2060][Usaco2010 Nov]Visiting Cows 拜访奶牛_树形dp的更多相关文章
- 【BZOJ】2060: [Usaco2010 Nov]Visiting Cows 拜访奶牛(树形dp)
http://www.lydsy.com/JudgeOnline/problem.php?id=2060 裸的树形dp d[x][1]表示访问x的数量,d[x][0]表示不访问x的数量 d[x][1] ...
- bzoj 2060: [Usaco2010 Nov]Visiting Cows 拜访奶牛【树形dp】
设f[u][0/1]为u这个点不选/选,转移的时候从儿子转移,f[u][1]=sum(f[son][0])+1,f[u][0]=sum(max(f[son][0],f[e[i].to][1])) #i ...
- [codevs1380]没有上司的舞会([BZOJ2060][Usaco2010 Nov]Visiting Cows 拜访奶牛)
[codevs1380]没有上司的舞会 试题描述 Ural大学有N个职员,编号为1~N.他们有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.每个职员有一个快乐指数.现 ...
- BZOJ2060: [Usaco2010 Nov]Visiting Cows 拜访奶牛
n<=50000个点的树,求选最多不相邻点的个数. f[i][0]=sigma max(f[j][0],f[j][1]),j为i的儿子 f[i][1]=sigma f[j][0],j同上 死于未 ...
- BZOJ 2060: [Usaco2010 Nov]Visiting Cows 拜访奶牛( dp )
树形dp..水 ------------------------------------------------------------------------ #include<cstdio& ...
- 2060: [Usaco2010 Nov]Visiting Cows 拜访奶牛
2060: [Usaco2010 Nov]Visiting Cows 拜访奶牛 Time Limit: 3 Sec Memory Limit: 64 MBSubmit: 252 Solved: 1 ...
- 【bzoj2060】[Usaco2010 Nov]Visiting Cows拜访奶牛
题目描述 经过了几周的辛苦工作,贝茜终于迎来了一个假期.作为奶牛群中最会社交的牛,她希望去拜访N(1<=N<=50000)个朋友.这些朋友被标号为1..N.这些奶牛有一个不同寻常的交通系统 ...
- 【bzoj2060】[Usaco2010 Nov]Visiting Cows拜访奶牛 树形dp
题目描述 经过了几周的辛苦工作,贝茜终于迎来了一个假期.作为奶牛群中最会社交的牛,她希望去拜访N(1<=N<=50000)个朋友.这些朋友被标号为1..N.这些奶牛有一个不同寻常的交通系统 ...
- 【BZOJ】2060: [Usaco2010 Nov]Visiting Cows 拜访奶牛
[算法]树形DP [题解]没有上司的舞会?233 f[x][0]=∑max(f[v][0],f[v][1]) f[x][1]=(∑f[v][0])+1 #include<cstdio> # ...
随机推荐
- 关于swoole 和golang 的压力测试结果
一.环境介绍 linux centos7 php7.1.18 go1.12.1 2核4G内存 二.代码 swoole代码 <?php $http = new swoole_http_server ...
- array_column()函数兼容低版本
array_column 用于获取二维数组中的元素(PHP 5.5新增函数),但我们有时候需要在低版本的 function i_array_column($input, $columnKey, $in ...
- 城市平乱 ---- Dijkstra
题解 : 以暴乱城市 为 源点 向所有点做最短路径 , 然后检查每个不对到暴乱城市的 最短距离 #include<stdio.h> #include<string.h> #in ...
- windows怎么进如debug调试
主要说一下64位Win7使用debug程序的方法 首先你要下载一个DOSBOX程序 这个程序是一个dos模拟器 这个程序的制作目的是运行经典的DOS游戏 -.- 下载地址:http://www.dos ...
- js面试笔试题
1. Js的Typeof返回类型有那些? string:undefined:number; function:object:boolean:symbol(ES6) 2. null和undefined的 ...
- Android 微信SDK图片分享(checkArgs fail, thumbData is invalid)
微信官网给的Demo中.图片的分享例子他是这么描述的: String url = "http://pic2.nipic.com/20090506/1478953_125254084_2.jp ...
- DataTable And DataRow
/// <summary> /// 将DataTable的字段名全部翻译为中文 /// </summary> /// <param name="table&qu ...
- CSS——样式初始化
腾讯: body,ol,ul,h1,h2,h3,h4,h5,h6,p,th,td,dl,dd,form,fieldset,legend,input,textarea,select{margin:0;p ...
- 使用doxmate生成文档
主页:http://html5ify.com/doxmate/ 在windows下面使用doxmate 1. 下载node.js(msi)并安装 http://www.nodejs.org/downl ...
- js post一个对象 在C#中怎么接收? 未解决
这个在C#中怎么接收?