题意:带权树上有起点终点每个点上有宝藏,一个人只有T分钟要从起点到重点,问你最多能收集多少宝藏。思路:树形dp,首先判断能不能走到终点,然后把路径上的边权变为0时间减去所有边权。dp[v][j]表示从v出发回到v话费j分钟最多能收集到的宝藏。dp[v][j]
= max(dp[v][j], dp[x...
分类:
其他好文 时间:
2014-05-10 01:47:33
阅读次数:
324
The more, The Better
Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 4949 Accepted Submission(s): 2918
Problem Description
ACboy...
分类:
其他好文 时间:
2014-05-09 20:49:51
阅读次数:
307
Anniversary party
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 4310 Accepted Submission(s): 1976
Problem Description
There is...
分类:
其他好文 时间:
2014-05-09 06:08:50
阅读次数:
305
题意:一个人要买通若干支持者,这些支持者的关系形成一棵森林,只要买通树根他的孩子节点也会被买通,问你至少要买通m个守卫要花多少钱。思路:由于是一颗森林我们需要加一个结点使得他到每个点都建一条边,然后dp[i][j]表示i为根的结点买通j个需要的最小花费。dp[v][j]
= min(dp[v][j]...
分类:
其他好文 时间:
2014-05-08 19:51:40
阅读次数:
310
OJ题目:click here~~
树上的01背包
const int maxn = 102;
int val[maxn];
int w[maxn];
vector g[maxn];
int dp[maxn][maxn];
int n , m ;
void dfs(int u , int father){
int v , i , j , k;
for(i = w[u];i...
分类:
其他好文 时间:
2014-05-08 05:09:28
阅读次数:
323
Problem Description
有一棵 n 个节点的树,树上每个节点都有一个正整数权值。如果一个点被选择了,那么在树上和它相邻的点都不能被选择。求选出的点的权值和最大是多少?
Input
第一行包含一个整数 n 。
接下来的一行包含 n 个正整数,第 i 个正整数代表点 i 的权值。
接下来一共 n-1 行,每行描述树上的一条边。
Out...
分类:
其他好文 时间:
2014-05-08 04:55:03
阅读次数:
282
递归建树,由题知该树是一棵二叉树,且除根节点外其他点的度为0或2。
dp[i][j]表示来到第i个走廊(还未走过这条走廊)还剩下j时间,能拿到最大的画的数量。
dp[i][j]=max(dp[i][j],dp[lson[i]][k]+dp[rson][last_time-k])
#include
#include
using namespace std;
int dp[200][70...
分类:
其他好文 时间:
2014-05-07 05:02:45
阅读次数:
295
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4607
题目大意:给你n个点,n-1条边,将图连成一棵生成树,问你从任意点为起点,走k(k
思路:树形dp求树的直径r;
a:若k
b:若k>=r+1,ans = r+(k-(r+1))*2;
#include "stdi...
分类:
其他好文 时间:
2014-05-06 22:26:03
阅读次数:
328
题目链接:uva 1484 - Alice and Bob's Trip
题目大意:Alice和Bob小两口一起出去旅行,他们从0城市出发,Bob喜欢走比较远的路,因为他是个勤奋的好孩子,Alice喜欢走比较近的路,因为她是一个不勤奋的坏孩子,所以有了意见上的分歧,于是乎在出门前他们约法三章,要求说最后的距离值在[l,r]之间,并且由夫妻两轮流做决定,决定说下一个城市去哪里。现在给出n个...
分类:
其他好文 时间:
2014-05-06 15:16:29
阅读次数:
339
题意:一棵树上问你最少切掉几条边使得能分割出一个结点数正好为k的子树。思路:dp[i][j]表示以i为根切掉j个结点最少要几条边。dp[v][j]
= min(dp[v][j], dp[v][j-k] + dp[x][k]);代码如下: 1 dp[v]...
分类:
其他好文 时间:
2014-05-05 23:47:19
阅读次数:
370