[P2996][USACO10NOV]拜访奶牛Visiting Cows (树形DP)
之前写在洛谷,结果没保存,作废……
听说考前写题解RP++哦
思路
很容易想到是
树形DP
如果树形DP不知道是什么的话推荐百度一下
我在这里用vector储存边
设状态f[i][0]为i点不访问,f[i][1]为i点访问
那么f[u][1] += f[y][0]表示u点要访问,(u,y)有连边
f[u][0] += max(f[v][0], f[v][1])表示u点不访问,(u,y)有连边
上面就是我们的转移方程了
介绍一下vector吧
vector是STL里的一个向量容器
也叫动态数组
就是不定长的数组
用来储存边非常好用
因此我在这里用vector给大家演示一下
代码
#include<bits/stdc++.h>//万能头
#define ll long long//作废
using namespace std;//标准头
#define N 50005
int f[N][];//DP
vector<int>son[N];//建图
bool v[N];//标记是否访问
inline int read() {
int f = , x = ; char ch;
do { ch = getchar(); if (ch == '-')f = -; } while (ch<'' || ch>'');
do { x = x * + ch - ''; ch = getchar(); } while (ch >= ''&&ch <= '');
return f * x;
}//读入优化 不解释
int dp(int u)//以u为根节点
{
f[u][] = ;//初始值1
for (int i=;i<son[u].size();i++)//用vector访问每一个点
{
int y=son[u][i];//y为下一个要搜的点 即子节点
if(!v[y]) //如果子节点没被访问
{
v[y]=true;//标记
dp(y);//递归访问
f[u][]+=max(f[y][],f[y][]); //转移方程 上面有解释
f[u][]+=f[y][];
}
}
}
int main()
{
int n=read();
for(int i=;i<n;i++)
{
int x=read(),y=read();
son[x].push_back(y);//用vector建边
son[y].push_back(x);
}
memset(v,,sizeof(v));memset(f,,sizeof(f));
v[]=true;//初始值
dp();//以1为根
printf("%d\n",max(f[][],f[][])); //输出
return ;
}
[P2996][USACO10NOV]拜访奶牛Visiting Cows (树形DP)的更多相关文章
- 洛谷 P2996 [USACO10NOV]拜访奶牛Visiting Cows
P2996 传送门 题意: 给你一棵树,每一条边上最多选一个点,问你选的点数. 我的思想: 一开始我是想用黑白点染色的思想来做,就是每一条边都选择一个点. 可以跑两边一遍在意的时候染成黑,第二遍染成白 ...
- 洛谷P2996 [USACO10NOV]拜访奶牛Visiting Cows
题目 树形dp 设f[i][j]表示走到第i号节点的最大权值 j为0/1表示这个点选或者不选 如果这个点不选 就从他的子树里的选或者不选选最大 如果这个点选 就加上他子树的不选 f[x][0] += ...
- 【bzoj2591】[Usaco 2012 Feb]Nearby Cows 树形dp
题目描述 Farmer John has noticed that his cows often move between nearby fields. Taking this into accoun ...
- 洛谷P3047 [USACO12FEB]Nearby Cows(树形dp)
P3047 [USACO12FEB]附近的牛Nearby Cows 题目描述 Farmer John has noticed that his cows often move between near ...
- BZOJ 1827: [Usaco2010 Mar]gather 奶牛大集会 树形DP
[Usaco2010 Mar]gather 奶牛大集会 Bessie正在计划一年一度的奶牛大集会,来自全国各地的奶牛将来参加这一次集会.当然,她会选择最方便的地点来举办这次集会.每个奶牛居住在 N(1 ...
- 【BZOJ1827】[Usaco2010 Mar]gather 奶牛大集会 树形DP
[BZOJ][Usaco2010 Mar]gather 奶牛大集会 Description Bessie正在计划一年一度的奶牛大集会,来自全国各地的奶牛将来参加这一次集会.当然,她会选择最方便的地点来 ...
- 2018.07.22 洛谷P2986 伟大的奶牛聚集(树形dp)
传送门 给出一棵树,树有边权和点权,若选定一个点作为中心,这棵树的代价是所有点权乘上到根的距离的和.求代价最小. 解法:一道明显的换根dp" role="presentation& ...
- BZOJ 1827: [Usaco2010 Mar]gather 奶牛大集会 树形DP + 带权重心
Description Bessie正在计划一年一度的奶牛大集会,来自全国各地的奶牛将来参加这一次集会.当然,她会选择最方便的地点来举办这次集会.每个奶牛居住在 N(1<=N<=100,0 ...
- luogu 3047 [USACO12FEB]附近的牛Nearby Cows 树形dp
$k$ 十分小,直接暴力维护 $1$~$k$ 的答案即可. 然后需要用父亲转移到儿子的方式转移一下. Code: #include <bits/stdc++.h> #define M 23 ...
随机推荐
- 解决Django + DRF:403 FORBIDDEN:CSRF令牌丢失或不正确,{"detail":"CSRF Failed: CSRF cookie not set."}
我有一个Android客户端应用程序尝试使用Django + DRF后端进行身份验证.但是,当我尝试登录时,我收到以下响应: 403: CSRF Failed: CSRF token missing ...
- 天财商龙SQL查询ID登陆POS情况
SELECT * FROM [tcgem_client0001].[dbo].[TCB_POS] ' --查询ID登陆POS情况
- 将现有项目添加到TFS中
假设在Projects文件夹中有一个名为WpfApplication1的项目需要添加到TFS. 我们可以这样做: 1.打开视图->团队资源管理器,点击管理连接,在弹出的窗口中选择服务器和团队项目 ...
- dubbo的工作原理
dubbo工作原理 第一层:service层,接口层,给服务提供者和消费者来实现的 第二层:config层,配置层,主要是对dubbo进行各种配置的 第三层:proxy层,服务代理层,透明生成客户端的 ...
- Can't connect to X11 window server using 的问题,求解
在JVM中加入-Djava.awt.headless=true对于tomcat ,可以修改catalina.sh,加入:CATALINA_OPTS="$CATALINA_OPTS -Djav ...
- 利用redis统计信息对CPU使用率进行收集
http://dy.163.com/v2/article/detail/DQT2ROO10511RVML.html
- 利用sqlmap注入测试
安装:yum install -y gitcd /usr/local && git clone https://github.com/sqlmapproject/sqlmap.gitc ...
- Android补间动画、帧动画和属性动画使用知识介绍
https://blog.csdn.net/zhangqunshuai/article/details/81098062
- 真的分治fft
以前学的分治fft f[i]=sigma(f[i-x]*g[x]),其中g[x]已知 那么我们可以用cdq分治来做(l,mid 对mid+1,t的影响) 而现在的$f[i]=sum(f(i-x)*f( ...
- Kafka/Zookeeper集群的实现(二)
[root@kafkazk1 ~]# wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.12/zookeeper-3.4.12. ...