bzoj4472: [Jsoi2015]salesman(树形dp)】的更多相关文章

4472: [Jsoi2015]salesman Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 417  Solved: 192[Submit][Status][Discuss] Description 某售货员小T要到若干城镇去推销商品,由于该地区是交通不便的山区,任意两个城镇 之间都只有唯一的可能经过其它城镇的路线. 小T 可以准确地估计出在每个城镇停留的净收 益.这些净收益可能是负数,即推销商品的利润抵不上花费.由于交通不便,小T经过每个…
Description 某售货员小T要到若干城镇去推销商品,由于该地区是交通不便的山区,任意两个城镇之间都只有唯一的可能经过其它城镇的路线. 小T 可以准确地估计出在每个城镇停留的净收益.这些净收益可能是负数,即推销商品的利润抵不上花费.由于交通不便,小T经过每个城镇都需要停留,在每个城镇的停留次数与在该地的净收益无关,因为很多费用不是计次收取的,而每个城镇对小T的商品需求也是相对固定的,停留一次后就饱和了.每个城镇为了强化治安,对外地人的最多停留次数有严格的规定.请你帮小T 设计一个收益最大的…
传送门 树形dp 对于每个点维护其子节点的走法是否唯一,每次取最大的并且不为负的(停留次数-1)个子儿子权值,然后判断走法是否唯一 假如有子节点的权值为0,走法也不唯一 代码: #include<cstdio> #include<iostream> #include<algorithm> #include<vector> #include<cstring> using namespace std; void read(int &x) {…
bzoj4472,懒得复制,戳我戳我 Solution: 题面意思:从\(1\)号节点出发,每到一个节点就必须停下,获得节点权值(每个节点只会获得一次),每个点有个规定的停留次数,求最大可获得多大权值,并且判断是否只有唯一的路线才能获得这个权值 直接\(dp\)储存子树最大获得权值就行,顺便要记录方案是否唯一,所以我们可以拿一个结构体来记录 \(dp\)权值思路:找出所有子树中前\(vis[i]-1\)大的节点权值(只选大于\(0\)的权值). \(dp\)方案思路: 1.如果有选择的节点是方案…
相当于选一个包含根的连通块使权值和最大,且每个点的儿子选取数量有限制.那么显然贪心的在所有子树中选比较大的就可以了.至于方案是否唯一只需要看选的子树是否可以替换,注意dp值为0的情况. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm> using namespace st…
题意: 给定一颗有点权的树,每个树上的节点最多能走到lim[u]次,求一条路径,使路径上的点权和最大,每个节点上的点权如果走了多次只能算一次.还要求方案是否唯一. 思路:每个点只能取lim[u]-1个子树.因为每个子树只取1次或不取,考虑树形DP,dp[u]=dp[v1]+dp[v2]+...(加lim[u]-1)个,是排序后最大的.因为不一定要去满lim[u]-1个,如果负数就不走. 判多解: 1.儿子不唯一老子不唯一. 2.取得最后一个和不取的第一个dp值相等就不唯一. 3.取得里面有0就不…
题目 原地址 解说 刚看完这道题感觉还是挺乱的,可能那时候脑子不太清醒,一度觉得自己又要重拾Tarjan了.当然最后还是发觉应该用树形DP. (以下dp[u]代表以u为根的包括自己在内的子树的最大利润,bool g[u]表示u及其子树的方案数是否唯一,唯一则为0,否则为1,t[u]代表u的次数,v[u]代表u的价值) 计算最大利润确实挺简单.有点像之前做过的空调教室,但是多了次数限制和负数,但这不难处理.计算u的时候因为每个儿子在走完之后必须返回u来回到根节点,因此我们只能对儿子的dp值进行排序…
题目内容 vjudge链接 某售货员小T要到若干城镇去推销商品,由于该地区是交通不便的山区,任意两个城镇 之间都只有唯一的可能经过其它城镇的路线. 小T 可以准确地估计出在每个城镇停留的净收 益.这些净收益可能是负数,即推销商品的利润抵不上花费.由于交通不便,小T经过每个 城镇都需要停留,在每个城镇的停留次数与在该地的净收益无关,因为很多费用不是计次收 取的,而每个城镇对小T的商品需求也是相对固定的,停留一次后就饱和了.每个城镇为了 强化治安,对外地人的最多停留次数有严格的规定.请你帮小T 设计…
Network Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 4478   Accepted: 1292 Description Yixght is a manager of the company called SzqNetwork(SN). Now she's very worried because she has just received a bad news which denotes that DxtNet…
可以发现这道题的数据范围有些奇怪,为毛n辣么大,而k只有10 我们从树形dp的角度来考虑这个问题. 如果我们设f[x][k]表示与x距离为k的点的数量,那么我们可以O(1)回答一个询问 可是这样的话dp貌似就比较麻烦了. 我们考虑一般树形dp都是怎样的,一般的树形dp,都是因为子树上的f值可以无后效的转移到根节点上,并且子树的f值与父亲无关,如果我们按照上述定义,那么就会发现这需要两遍dfs来解决,并且细节不少. 但是两遍dfs我并不会QAQ 所以我们考虑转换一种定义,设f[x][k]表示在以x…