【HDOJ】1520 Anniversary party
第二道树形DP,先是MLE。后来仅需改小邻接矩阵的第二个维度到30就过了。
#include <cstdio>
#include <cstring>
#include <cstdlib> #define MAXN 6005 int rat[MAXN];
int dp[MAXN][];
int adj[MAXN][];
bool visit[MAXN];
int n; int max(int a, int b) {
return a>b ? a:b;
} void dfs(int r) {
int i, v; visit[r] = true;
dp[r][] = rat[r];
for (i=; i<=adj[r][]; ++i) {
v = adj[r][i];
if (visit[v])
continue;
dfs(v);
// r node not attend, v get the maximum
dp[r][] += max(dp[v][], dp[v][]);
// r node attend, v not attend.
dp[r][] += dp[v][];
}
} int main() {
int i, j, k;
int a, b; #ifndef ONLINE_JUDGE
freopen("data.in", "r", stdin);
#endif while (scanf("%d", &n) != EOF) {
for (i=; i<=n; ++i)
scanf("%d", &rat[i]); memset(adj, , sizeof(adj));
memset(visit, false, sizeof(visit));
memset(dp, , sizeof(dp));
while (scanf("%d %d", &a, &b)!=EOF && (a||b)) {
++adj[a][];
adj[a][adj[a][]] = b;
++adj[b][];
adj[b][adj[b][]] = a;
} dfs();
printf("%d\n", max(dp[][], dp[][]));
} return ;
}
【HDOJ】1520 Anniversary party的更多相关文章
- 【HDU】1520 Anniversary party(树形dp)
题目 题目 分析 带权值的树上最大独立集 代码 #include <bits/stdc++.h> using namespace std; ; int a[maxn], n, fa[max ...
- 【TYVJ】1520 树的直径
[算法]树的直径 memset(a,0,sizeof(a)) #include<cstdio> #include<algorithm> #include<cstring& ...
- 【HDOJ】4729 An Easy Problem for Elfness
其实是求树上的路径间的数据第K大的题目.果断主席树 + LCA.初始流量是这条路径上的最小值.若a<=b,显然直接为s->t建立pipe可以使流量最优:否则,对[0, 10**4]二分得到 ...
- 【Poj】 p2342 Anniversary party(树形DP第一道)
Anniversary party Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5523 Accepted: 3169 ...
- 【HDOJ】【3506】Monkey Party
DP/四边形不等式 裸题环形石子合并…… 拆环为链即可 //HDOJ 3506 #include<cmath> #include<vector> #include<cst ...
- 【HDOJ】【3516】Tree Construction
DP/四边形不等式 这题跟石子合并有点像…… dp[i][j]为将第 i 个点开始的 j 个点合并的最小代价. 易知有 dp[i][j]=min{dp[i][j] , dp[i][k-i+1]+dp[ ...
- 【HDOJ】【3480】Division
DP/四边形不等式 要求将一个可重集S分成M个子集,求子集的极差的平方和最小是多少…… 首先我们先将这N个数排序,容易想到每个自己都对应着这个有序数组中的一段……而不会是互相穿插着= =因为交换一下明 ...
- 【HDOJ】【2829】Lawrence
DP/四边形不等式 做过POJ 1739 邮局那道题后就很容易写出动规方程: dp[i][j]=min{dp[i-1][k]+w[k+1][j]}(表示前 j 个点分成 i 块的最小代价) $w(l, ...
- 【HDOJ】【3415】Max Sum of Max-K-sub-sequence
DP/单调队列优化 呃……环形链求最大k子段和. 首先拆环为链求前缀和…… 然后单调队列吧<_<,裸题没啥好说的…… WA:为毛手写队列就会挂,必须用STL的deque?(写挂自己弱……s ...
随机推荐
- jquery append
将已经存在的一个dom对象A,通过jquery append插入另一个dom对象B,将会改变dom树结构--即A成为了B的子元素. 举个例子: js: $(".table-container ...
- 双slave的server_uuid同样问题
早上做数据迁移,部署完slave2,发现3台机子的日志狂刷: 旧slave: 2014-05-29 14:35:35 996 [Note] Slave: received end packet fro ...
- Android Studio中自己定义快捷输入块
快捷键:Ctrl + Alt + s,进入Settings >Editor>Live Templates>output中加入一个项,选择第一个Live Template waterm ...
- mysql 热备
全备份:(生成时间戳文件夹:2016-04-20_16-12-01)innobackupex --users=root --password=root /tmp/backup 第一次增量备份:(生成时 ...
- HTML中常用的列表标签
- ajax调用webservice(二) 跨域。
所需工具与项目结构同(一). service.asmx中代码如下: using System; using System.Collections.Generic; using System.Web; ...
- 查询oracle表和sql数据量大小
select t.TABLE_NAME,t.NUM_ROWS from user_tables t order by t.TABLE_NAME:--oracle SELECT object_name ...
- php引用传值
isset();判读值是否值在 unset();取消变量 <?php$a=array("a","b","c");$b=$a;$b[2] ...
- 解决使用angularjs时页面因为{{ }}闪烁的两种方式ng-bind,ng-cloak
1.HTML加载含有{{ }}语法的元素后并不会立刻渲染它们,导致未渲染内容闪烁(Flash of Unrendered Content,FOUC).我可以用ng-bind将内容同元素绑定在一起避免F ...
- IO流(文件字节输入输出
输入输出流可能有不允许操作,可能有出现错误,必须在try语句中进行 FileOutputStream out1=new FileOutputStream("test1.txt") ...