ZOJ 3201】的更多相关文章

树形DP.... Tree of Tree Time Limit: 1 Second      Memory Limit: 32768 KB You're given a tree with weights of each node, you need to find the maximum subtree of specified size of this tree. Tree Definition A tree is a connected graph which contains no c…
id=15737" target="_blank">Tree of Tree Time Limit: 1000MS   Memory Limit: 32768KB   64bit IO Format: %lld & %llu Description You're given a tree with weights of each node, you need to find the maximum subtree of specified size of thi…
#include<cstdio> #include<vector> #include<cstring> #include<iostream> using namespace std; ; vector<int>a[MAXN]; int n,m,v[MAXN],vis[MAXN],dp[MAXN][MAXN]; void dfs(int root) { dp[root][] = v[root]; vis[root] = ; int i, len =…
题意:有一棵树,树上每个结点都有一个权值,求恰好包含k个结点的子树的最大权值. 设dp[i][j]为以结点i为根的树中包含j个结点的子树的最大权值,则可以把这个结点下的每棵子树中所包含的所有子树的大小当做物品的重量,对应的最大权值当做物品的价值,则相当于在它的每颗子树的所有物品中任选一个进行更新,对每个状态取最大价值. 状态转移方程:$dp[u][j]=max(dp[u][j],dp[u][j-k]+dp[v][k])$ 注:由于每棵子树下只能选一件物品,所以应当先枚举状态再枚举物品,这样就避免…
题目大意: 0~n-1号这n个点,每个点有个权值,由无向边形成了一棵树,希望在这棵树上找到一棵长为m的子树使总的权值最小 基本的树形背包问题 令dp[u][j] 表示u号节点对应子树中有j个节点所能得到的最大权值 dp[u][1] = val[u] dp[u][j] = max{dp[v][k] + dp[u][j-k]} j>1  1=<k<j 我们通过dfs自底向上更新 在dfs过程中建立一个 j ,k 的循环即可 我一开始想的时候认为这个只做到了 u 的下方考虑,如果所得到的子树是…
D - Tree of Tree ZOJ - 3201 这个题目我开始是这么定义的dp[i][j][0] dp[i][j][1] 表示对于第i个节点还有j个的选择 0 代表不选这个节点,1 代表选这个节点. 然后我写了,对题目理解出现了偏差写出来一个错误的,然后正确理解题意发现这样子写好麻烦.转移方程很难写. 上网搜题解,网上基本上都是这么定义的 dp[i][j]表示选第 i 个节点该子树的节点数为  j  的最大带权值. 所以这个就可以变成一个树形dp+01背包. 这个状态转移方程应该就是 d…
第十三届浙江省大学生程序设计竞赛 I 题, 一道模拟题. ZOJ  3944http://www.icpc.moe/onlinejudge/showProblem.do?problemCode=3944 In a BG (dinner gathering) for ZJU ICPC team, the coaches wanted to count the number of people present at the BG. They did that by having the waitre…
A Simple Tree Problem Time Limit: 3 Seconds      Memory Limit: 65536 KB Given a rooted tree, each node has a boolean (0 or 1) labeled on it. Initially, all the labels are 0. We define this kind of operation: given a subtree, negate all its labels. An…
这道题目还是简单的,但是自己WA了好几次,总结下: 1.对输入的总结,加上上次ZOJ Problem Set - 1334 Basically Speaking ac代码及总结这道题目的总结 题目要求输入的格式: START X Y Z END 这算做一个data set,这样反复,直到遇到ENDINPUT.我们可以先吸纳一个字符串判断其是否为ENDINPUT,若不是进入,获得XYZ后,吸纳END,再进行输出结果 2.注意题目是一个圆周,所以始终用锐角进行计算,即z=360-z; 3.知识点的误…
放了一个长长的暑假,可能是这辈子最后一个这么长的暑假了吧,呵呵...今天来实验室了,先找了zoj上面简单的题目练练手直接贴代码了,不解释,就是一道简单的密文转换问题: #include <stdio.h> #include <string.h> int main() { char cText[1000]; char start[10]; char end[5]; while(scanf("%s",start)!=EOF&&strcmp(start…