Vijos p1688 病毒传递 树形DP】的更多相关文章

https://vijos.org/p/1688 看了下别人讨论的题解才想到的,不过方法和他的不同,感觉它的是错的.(感觉.感觉) 首先N只有1000, 如果能做到暴力枚举每一个节点,然后O(N)算出其贡献,那么也在允许的时间内. 假设我们现在对1这个节点进行计数,设dp[i]表示入侵i号节点和其所有子树所需要的最小时间. 那么.假设1号有k个儿子,dp[son1] . dp[son2]. dp[sonk]都算出来了,那么dp[1] = max(dp[son])对吧. 但是入侵这些儿子都有一定的…
描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行”.今天一早,金明就开始做预算了,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子:主件 附件电脑 打印机,扫描仪书柜 图书书桌 台灯,文具工作椅 无如果要买归类为附件的物品,必须先买该附件所属的主件.每个主件可以有0个.1个或2个附件.附件不再有从属于自己的附件.金明…
https://vijos.org/p/1518 这题代码我基本是抄的,实在太难想了.但是也学到了一些东西. 比如:多叉树转二叉树存,这个细细一想,确实使得在dfs的时候,实现起来方便很多. 说一说具体 dfs的思路,思路和网上那个一模一样的,我刚学树形dp,可能上网看看总结下套路比较好. 设dfs(cur, hasPoint, k, dis)表示,现在处理到cur这个节点,离cur最近的那个仓库节点是hasPoint, 剩下k次设置仓库的机会,还有就是cur的爸爸距离hasPoint的距离.…
贪吃的九头龙 背景 安徽省芜湖市第二十七中学测试题 NOI 2002 贪吃的九头龙(dragon) Description:OfficialData:OfficialProgram:Converted by JackDavid127 描述 传说中的九头龙是一种特别贪吃的动物.虽然名字叫“九头龙”,但这只是说它出生的时候有九个头,而在成长的过程中,它有时会长出很多的新头,头的总数会远大于九,当然也会有旧头因衰老而自己脱落. 有一天,有M个脑袋的九头龙看到一棵长有N个果子的果树,喜出望外,恨不得一口…
小胖守皇宫 描述 huyichen世子事件后,xuzhenyi成了皇上特聘的御前一品侍卫. 皇宫以午门为起点,直到后宫嫔妃们的寝宫,呈一棵树的形状:某些宫殿间可以互相望见.大内保卫森严,三步一岗,五步一哨,每个宫殿都要有人全天候看守,在不同的宫殿安排看守所需的费用不同. 可是xuzhenyi手上的经费不足,无论如何也没法在每个宫殿都安置留守侍卫. 帮助xuzhenyi布置侍卫,在看守全部宫殿的前提下,使得花费的经费最少. 格式 输入格式 输入文件中数据表示一棵树,描述如下: 第1行 n,表示树中…
4天终于做出来了,没错我就是这么蒟蒻.教训还是很多的. 建议大家以后编树形DP不要用记忆化搜索,回溯转移状态个人感觉更有条理性. 大神题解传送门 by iwtwiioi 我的题解大家可以看注释"//"部分 本题我用的树形DP中dp[x][fa][need]表示编号为x的节点的父亲选(1)没选(0),x的父亲需(1)不需要(0)其他节点来覆盖. 若父亲节点选了,则need肯定为0,所以不存在fa==1而need==1的状态,相当于浪费了¼的空间.毕竟数据范围比较小,而且程序要有可读性!程…
背景 十八居士的毕业典礼(1) 描述 福州时代中学2009届十班同学毕业了,于是班长PRT开始筹办毕业晚会,但是由于条件有限,可能每个同学不能都去,但每个人都有一个权值,PRT希望来的同学们的权值总和最大. 十班有一个周密的电话通知网络,它其实就是一棵树,根结点为班长PRT,由她来负责通知她的下线(也就是儿子节点),下线们继续通知自己的下线(不一定每个下线都要通知),任何人都可以不去:”为了使权值总和最大,班长想安排一下人,但是人数很多,人脑是难以应付的,所以她找到十八居士,让他编程用电脑解决.…
描述 学校实行学分制.每门的必修课都有固定的学分,同时还必须获得相应的选修课程学分.学校开设了N(N<300)门的选修课程,每个学生可选课程的数量M是给定的.学生选修了这M门课并考核通过就能获得相应的学分. 在选修课程中,有些课程可以直接选修,有些课程需要一定的基础知识,必须在选了其它的一些课程的基础上才能选修.例如<Frontpage>必须在选修了<Windows操作基础>之后才能选修.我们称<Windows操作基础>是<Frontpage>的先修课…
树形DP 树形DP:建立在树上的动态规划 一般有两种传递方式:根→叶或叶→根 前者出现在换根DP中,一般操作是求出某一个点的最优解,再通过这一个点推知其他点的最优解. 后者是树形DP的常见形式,一般树形DP都是在叶子向根转移上. 一般状态都是f[x][...]表示x的子树中如何如何 POJ_3342_Party at Hali-Bula_树形DP 题目大意:没有上司的舞会,不存在选了连续两个点的情况,求最多选多少人. 题解:最裸的树形DP,直接状态,f[i][0]表示没选这个点,子树中最多选了多…
题目:https://vijos.org/p/1892 分析:(100分其实用到各种c++优化,没什么实际意义,所以弄70就可以了) 题目很简单,很容易想出用树形DP,但是求方案数的时候,满满都是细节……,本渣考试时候就跪了……只能膜拜神犇代码…… #include <cstdio> #include <cstring> //#include <algorithm> using namespace std; typedef long long LL; ; struct…
树,一种十分优美的数据结构,因为它本身就具有的递归性,所以它和子树见能相互传递很多信息,还因为它作为被限制的图在上面可进行的操作更多,所以各种用于不同地方的树都出现了,二叉树.三叉树.静态搜索树.AVL树,线段树.SPLAY树,后缀树等等.. 枚举那么多种数据结构只是想说树方面的内容相当多,本专辑只针对在树上的动态规划,即树形DP.做树形DP一般步骤是先将树转换为有根树,然后在树上进行深搜操作,从子节点或子树中返回信息层层往上更新至根节点.这里面的关键就是返回的信息部分,这个也没一般性的东西可讲…
ZJK的黑OJ zjk开了一家"善良OJ".这其实是家黑OJ.每AC一道题,网站便会自动在电脑上安装一种木马.zjk通过窃取信息获取收益(如网游帐号.OI资料.和KK的照片等等). 作为一名资深黑客,老Z某日突然发现,"善良OJ"上的木马,自己电脑上都没有.这可十分让他过意不去.老Z决定通过多A题,来丰富自己电脑的病毒库. 经过调查,老Z发现,很多木马是不能共存的.比如"和谐"木马与"团结"木马,两者只能任选其一.然而,老Z是…
转载自 http://blog.csdn.net/woshi250hua/article/details/7644959#t2 题单:http://vjudge.net/contest/123963#overview 树,一种十分优美的数据结构,因为它本身就具有的递归性,所以它和子树见能相互传递很多信息,还因为它作为被限制的图在上面可进行的操作更多,所以各种用于不同地方的树都出现了,二叉树.三叉树.静态搜索树.AVL树,线段树.SPLAY树,后缀树等等.. 枚举那么多种数据结构只是想说树方面的内…
3566: [SHOI2014]概率充电器 题意:一棵树,每个点\(q[i]\)的概率直接充电,每条边\(p[i]\)的概率导电,电可以沿边传递使其他点间接充电.求进入充电状态的点期望个数 糖教题解传送门 每个充电的点贡献1,就是求每个点充电的概率的和 考虑树形DP ,分别求子树内的影响和父亲的影响 \(g[i]\)表示i被子树i里的点充电的概率,\(f[i]\)表示i被充电的概率 因为被子树充电时子树里的点不可能被i充电, \[g[i] = q_i \bigcup g_v : (i,v) \i…
http://acm.fzu.edu.cn/problem.php?pid=1227   Problem Description 大革命时期,地下党组织的联络图是一个树状结构.每个党员只和一个比他高一级的负责人单线联系,但他可以与若干个比他低一级的直接下属党员联系.紧急情况通常用鸡毛信传递.假设容易复制鸡毛信,但传递1 次鸡毛信需要1 个单位时间.试设计一个算法,计算从总负责人开始,传递鸡毛信到每个党员手中最少需要多少时间. 对于给定的地下党组织的联络图,计算从总负责人开始,传递鸡毛信到每个党员…
首先可以确定是树形DP,但这里存在跨子树的信息传递问题,这里就需要“借”的思想. f[i][j]表示i子树内所有点都被覆盖到,且i以外j层内的点都能被覆盖到 的方案数. g[i][j]表示i子树内离i距离不小于j的点都被覆盖到 的方案数. 这里f做了一个前缀和,g做了一个后缀和. 那么f有转移: 1.目前以x为根的子树还有点没被覆盖到,让新加的y子树内的守卫来覆盖. f[x][j]=g[x][j+1]+f[k][j+1] 2.目前x子树以完全覆盖,那么允许y子树存在未覆盖的点. f[x][j]=…
codevs 1378 选课 时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond  题目描述 Description 学校实行学分制.每门的必修课都有固定的学分,同时还必须获得相应的选修课程学分.学校开设了N(N<300)门的选修课程,每个学生可选课程的数量M是给定的.学生选修了这M门课并考核通过就能获得相应的学分. 在选修课程中,有些课程可以直接选修,有些课程需要一定的基础知识,必须在选了其它的一些课程的基础上才能选修.例如<Frontpage>…
非常妙的树形DP:由于n很小,我们可以枚举每一个点作为第一个节点,计算其时间花费 那么问题就转化为对于给点节点求花费时间. 通过观察,显然我们会发现先传给花费时间多的人更加合算,因为这样可以最大限度的避免 一个人还在辛苦的传递信息,另一个人却悠闲的喝下午茶(雾)的局面 所以我们可以每次都记录下对于一个节点而言,它的所有子节点的时长, 并对其排序,排序后先传给耗时最多的人,但这样传递了之后,由于耗时最多的人最先被传递, 那么这个本应耗时最多的人就不一定还是耗时最多的人了,因此我们要分别计算所有子节…
树形DP1.简介:树是一种数据结构,因为树具有良好的子结构,而恰好DP是从最优子问题更新而来,那么在树上做DP操作就是从树的根节点开始深搜(也就是记忆化搜索),保存每一步的最优结果.tips:树的遍历有从叶子节点->根节点和从根节点->叶子绩点两种节点,个人习惯从根节点开始遍历2.树形DP的状态定义:一般来说,树形DP的状态定义根据实际情况来定义,比如 HDU1520的定义为dp[maxn][2]. 转移方程为:if(i来) dp[i][1]+=dp[j][0]//j是i的子节点 else d…
1424 零树 题意 给出一棵树,每次可以选择一个包含节点 1 的连通块,将所有的节点的权值同时加 1 或减 1 ,问最少多少次操作使所有节点权值变为 0 . 分析 这种题意简单的题目好处就是能很快知道自己会不会做,有些很长的英文题搞半天题意还理解错了. 树形DP.首先需要两个数组 d1 d2 分别表示当前节点的 正值 或 负值 需要变成 0 . 先考虑都是正值的情况,对于子节点而言只需要找到子节点中最大的正值 max_d1 即可,因为其它小的正值可以在减数的时候顺带全部减掉,如果当前节点 i…
树形dp的状态转移分为两种,一种为从子节点到父节点,一种为父节点到子节点,下面主要讨论子节点到父亲节点的情况: 例题1(战略游戏): 这是一道典型的由子节点状态转移到父节点的问题,而且兄弟节点之间没有相互影响,我们用f[i][0]/f[i][1]表示i不取/要取时其所在子树总共最少取的节点数,不难得出dp方程: 代码: #include<iostream> #include<cstdio> #include<cstdlib> #include<cmath>…
树形DP 简单题 Description 给定一棵树,每个节点有一个值.对于一条路径,它的值为路径上所有点的值的乘积.求出树上所有路径的值的和. 注意:单个点也算一条路径. Input 第 1 行一个数 n,表示树的节点数. 第 2 行 n 个数,第 i 个数表示节点 i 的值. 第 3 到 n+1 行,每行两个数 u,v,表示 u,v 之间有一条边. Output 包含一个数,表示答案模 10086 的值. Sample Input 5 7 6 6 1 1 1 2 2 3 2 4 1 5 Sa…
[树形dp]就是在树上做的一些dp之类的递推,由于一般须要递归处理.因此平庸情况的处理可能须要理清思路.昨晚開始切了4题,作为入门训练.题目都很easy.可是似乎做起来都还口以- hdu1520 Anniversary party 给一颗关系树,各点有权值.选一些点出来.任一对直接相连的边连接的点不能同一时候选择,问选择出的权值和最大为多少. 考虑以u为根的子树能够选择的方法,dp[u]表示选择u时能获得最大收益.dp2[u]表示不选u时能获得的最大收益.则u不选时,为dp2[u]=max{dp…
树形 DP 总结 本文转自:http://blog.csdn.net/angon823/article/details/52334548 介绍 1.什么是树型动态规划 顾名思义,树型动态规划就是在“树”的数据结构上的动态规划,平时作的动态规划都是线性的或者是建立在图上的,线性的动态规划有二种方向既向前和向后,相应的线性的动态规划有二种方法既顺推与逆推,而树型动态规划是建立在树上的,所以也相应的有二个方向: 1.叶->根:在回溯的时候从叶子节点往上更新信息 2.根 - >叶:往往是在从叶往根df…
给定 n 个节点的树,边有权值.1 号点是根,除了 1 号点外的度数为 1 的节点是叶子.要求切断所有叶子和 1 号点之间的联系,切断一条边要花费这条边上权值对应的代价,要求总的代价不超过 m.在满足这个前提下要求切断的边权的最大值最小,求出这个最小值.$n ≤ 10^5$ 首先这个最大值肯定二分答案,然后树形DP限制割掉的边不能超过这个二分的边权,设$f[i]$表示在这个限制下该子树内所有叶子断绝与根的联系的最小代价. 于是$f[i]=max(w_{father},\sum\limits_{y…
题目链接:https://vijos.org/p/1144 woc我竟然A了,这道经典的树形dp或者说是树形dp的入门题我终于过了,虽然之前做过一些树形dp的题,但是这题开始还是一脸懵逼,dp方程如何定义都知道,但是不懂转移啊,这就有点伤了.. dp方程定义dp[i][1]节点i 选自己 dp[i][2]节点i选自己的儿子==不选自己和父亲 dp[i][3]节点i选自己的父亲==不选自己选父亲 然后就是转移了..毕竟是基础题嘛,所以转移也不难 转移的时候我们是直接递归到叶节点然后再做前面的..所…
题目链接:https://www.vijos.org/p/1180 这是一道树形dp的裸题,唯一的有意思的地方就是用到了多叉树转二叉树 然后本蒟蒻写这一道水题就是因为以前知道这个知识点但是没有怎么去实现,所以就写了这一道题来练一练手 将这道题的多叉树转换成二叉树后,接着就是状态转移方程了 我们先定义数组dp[i][j]表示第i门课,还可以选j门 然后我们可以想到,第i门课我们可以不选,如果不选,就不能去找i的左儿子,但是可以找i的右儿子,即i的右儿子(兄弟)选了j门 加入选了i,那么状态来源就是…
LINK:林克卡特树 作为树形dp 这道题已经属于不容易的级别了. 套上了Wqs二分 (反而更简单了 大雾 容易想到还是对树进行联通情况的dp 然后最后结果总和为各个联通块内的直径. \(f_{i,j}\)表示以i为根的子树内有j条边被删掉 可以发现这个状态难以转移. 需要换个状态 一个比较经典的做法是套用树的直径的那套来做 每个点向上传递单条链或者什么都不传来转移. 传递单条链可以在父亲的那个地方合成一条 然后钦定此条为以x为根的联通内的最大值 那么就可以从x所在父亲的那条边切断了. 或者 传…
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…