树形DP URAL 1039 Anniversary Party
/*
题意:上司在,员工不在,反之不一定。每一个人有一个权值,问权值和最大多少。
树形DP:把上司和员工的关系看成根节点和子节点的关系,两者有状态转移方程:
dp[rt][0] += max (dp[son][1], dp[son][0]); //上司不去
dp[rt][1] += dp[son][0]; //上司去,员工都不去
*/
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <cmath>
using namespace std; const int MAXN = 6e3 + ;
const int INF = 0x3f3f3f3f;
bool vis[MAXN];
vector<int> edge[MAXN];
int dp[MAXN][];
int n; void DFS(int rt)
{
vis[rt] = true;
dp[rt][] = ;
for (int i=; i<edge[rt].size (); ++i)
{
int son = edge[rt][i];
if (!vis[son])
{
DFS (son);
dp[rt][] += max (dp[son][], dp[son][]);
dp[rt][] += dp[son][];
}
}
} int main(void) //URAL 1039 Anniversary Party
{
// freopen ("URAL_1039.in", "r", stdin); while (scanf ("%d", &n) == )
{
memset (vis, false, sizeof (vis));
memset (dp, , sizeof (dp));
for (int i=; i<=n; ++i) scanf ("%d", &dp[i][]); int l, k;
while (scanf ("%d%d", &l, &k) == )
{
if (l == && k == ) break;
vis[l] = true;
edge[l].push_back (k);
edge[k].push_back (l);
} int root = ;
for (int i=; i<=n; ++i)
{
if (!vis[i]) {root = i; break;}
} memset (vis, false, sizeof (vis)); DFS (root);
printf ("%d\n", max (dp[root][], dp[root][]));
} return ;
}
树形DP URAL 1039 Anniversary Party的更多相关文章
- POJ 2342 Anniversary party / HDU 1520 Anniversary party / URAL 1039 Anniversary party(树型动态规划)
POJ 2342 Anniversary party / HDU 1520 Anniversary party / URAL 1039 Anniversary party(树型动态规划) Descri ...
- 树形dp(A - Anniversary party HDU - 1520 )
题目链接:https://cn.vjudge.net/contest/277955#problem/A 题目大意:略 具体思路:刚开始接触树形dp,说一下我对这个题的初步理解吧,首先,我们从根节点开始 ...
- Ural 1039 Anniversary Party
题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1039 Dynamic Programming. 建立树形结构,每个employee有两个 ...
- poj 2342 Anniversary party 简单树形dp
Anniversary party Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3862 Accepted: 2171 ...
- HDU 1520.Anniversary party 基础的树形dp
Anniversary party Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- POJ 2342 - Anniversary party - [树形DP]
题目链接:http://poj.org/problem?id=2342 Description There is going to be a party to celebrate the 80-th ...
- hdu Anniversary party 树形DP,点带有值。求MAX
Anniversary party Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- hdu 1520 Anniversary party(第一道树形dp)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1520 Anniversary party Time Limit: 2000/1000 MS (Java ...
- ural 1039 树dp
http://acm.timus.ru/problem.aspx?space=1&num=1039 1039. Anniversary Party Time limit: 0.5 second ...
随机推荐
- 牛客网小白月赛1 B,I
#include <stdio.h> #include <math.h> #include <string.h> #include <stdlib.h> ...
- POJ 3233_Matrix Power Series
题意: 求n*n矩阵的幂和 分析: 逐个加起来时间复杂度太高,通过在矩阵中套个矩阵和,再利用矩阵快速幂,最后时间复杂度为O(n3logn) 代码: #include<cstdio> #in ...
- UVA 10006_Carmichael number
题意: N 为合数,对于任意一个在(1,N)之间的数满足 anmodn=a,则称N为Carmichael number,对于给定的N,判断是否为Carmichael number. 分析: 素数区间筛 ...
- [bzoj1324]Exca王者之剑_最小割
Exca王者之剑 bzoj-1324 题目大意:题目链接. 注释:略. 想法: 最小割经典模型. 所有格子向源点连权值为格子权值的边. 将棋盘黑白染色后白点反转源汇. 如果两个格子相邻那么黑点向白点连 ...
- Redis集群方案之使用豌豆荚Codis搭建(待实践)
Codis的模式类似Twemproxy,不过这东西引入了ZooKeeper做为Redis的注册与发现来实现高可用. 部署时需要额外增加应用的部署,请根据业务需求来衡量. 部署图类似如下: 当然,上面的 ...
- Eclipse 远程tomcat调试程序
Eclipse 远程tomcat调试程序 很多时候我们把代码部署到云服务器上,需要调试的时候可以选择远程调试,既节省时间,效率又高.下面详细介绍如何进行远程调试. 1.1. 创建startup-deb ...
- jquery校验框架
http://www.validform.club/ http://craftpip.github.io/jquery-confirm/
- Linux下完美使用find+grep实现全局代码搜索
作者:zhanhailiang 日期:2014-10-11 背景 在Window下有大量方便的图形化工具能够实现全局搜索,可是Linuxserver中因为使用命令行操作导致全局搜索是一个比較高的门槛. ...
- C++ Primer高速入门之五:有用的模板库
更新:又一次排版代码格式 除上篇博客介绍的基本数据类型外,C++ 还定义了一个内容丰富的抽象数据类 型标准库. 包含 string 和 vector,它们分别定义了字符串和矢量(集合).string ...
- ZOJ 3819 Average Score 水
水 Average Score Time Limit: 2 Seconds Memory Limit: 65536 KB Bob is a freshman in Marjar Univer ...