树形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 ...
随机推荐
- [K/3Cloud] 动态表单打开时传递一个自定义参数并在插件中获取
插件中在调用动态表单时,通过DynamicFormShowParameter的CustomParams,增加自定义的参数. /// <summary> /// 库存查询 /// </ ...
- A Simple Problem with Integers-POJ3468
Description You have N integers, A1, A2, ... , AN. You need to deal with two kinds of operations. On ...
- SPOJ SUMPRO(数学)
题意: 给出一个数N,问所有满足n/x=y(此处为整除)的所有x*y的总和是多少.对答案mod(1e9+7). 1 <= T <= 500. 1 <= N <= 1e9. 分析 ...
- 04-js的运算符
<html> <head> <title>js的运算符学习</title> <meta charset="UTF-8"/> ...
- Windows Server 2012关机的几种方法
综合使用方法如下: 1.shutdown -r –f 強制重新启动 2.shutdown –s –f 強制关闭 方法/步骤 1 首先把鼠标移到任务栏右下角,时间往右一点小空位,稍微停留一 ...
- 反射实现Model修改前后的内容对比 【API调用】腾讯云短信 Windows操作系统下Redis服务安装图文详解 Redis入门学习
反射实现Model修改前后的内容对比 在开发过程中,我们会遇到这样一个问题,编辑了一个对象之后,我们想要把这个对象修改了哪些内容保存下来,以便将来查看和追责. 首先我们要创建一个User类 1 p ...
- Eclipse + CDT引入OpenCV失败的解决的方法
Android JNI开发中用到了OpenCV,由于想通过JNI实现,就没有去用Android层的Lib引用. 可是操作中发如今.cpp文件中include的时候发现"#include &l ...
- Android实战简易教程-第四十五枪(SlideSwitch-好看又有用的开关button)
开关button也是在项目中经经常使用到的控件,github上有开源的项目,我们研究下它的用法: 1.SlideButton.java: /* * Copyright (C) 2015 Quinn C ...
- hdu 5361 2015多校联合训练赛#6 最短路
In Touch Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total ...
- 【POI 2010】 Pilots
[题目链接] 点击打开链接 [算法] 单调队列 [代码] #include<bits/stdc++.h> using namespace std; #define MAXN 3000010 ...