--------树形dp-DAG上dp
文章平均质量分 62
扩展的灰
扩展的灰(Extended Ash)
展开
-
Jzoj5418 合影
题目背景 热烈庆祝北京师范大学附属实验中学成立100周年!问题描述 经过一天的忙碌,志愿者们结束了他们的工作,准备站在一排合影留念。 现在总共有n名志愿者留下来准备合影。不过,进程并不是那么顺利,有些同学提出了一些奇奇怪怪的要求(每个人最多只会提出一个):他必须站在另外一个同学的左边(不一定相邻),仁慈的老师满足了他们的要求。这时,其中一位来原创 2017-11-07 07:52:09 · 345 阅读 · 0 评论 -
各种杂题合集
.好久没有往blog搬运题解了,稍微总结一下1.基环树一个非常套路的题目类型,都是可以直接复制代码的那种基本操作就是,dfs找环,让后拉出来倍长,最后在上面做dp即可CodeForces 835F Roads in the Kingdom大概就是要找删掉一条边后使得树最小的直径先dp环旁边的数,找到子树的到根最长链,设为fff倍长后令Fi=Si+fi,Gi=fi−SiF_i=S...原创 2018-10-24 22:02:49 · 222 阅读 · 0 评论 -
51nod1803 森林直径
题目看这里 (为什么xhEditor不能支持字体了,不管了,那就用markdown吧) 一个非常有意思的题目,首先考虑离线做法,把所有的询问按照l排序,所有的边倒序插入整个树中 我们需要维护两个东西: 1.f[x][i]表示当整颗树有[x,f[x][i]]这一个区间内的所有边时,以x为根的子树存在一个深度为i的儿子,满足条件最小的f[x][i] 2.g[k]表示最小的r,使得[l,...原创 2018-07-25 17:59:01 · 293 阅读 · 0 评论 -
51Nod1353 树
题目看这里题意很简单,大概是有多少种删边方法使得每一块大小不小于k我们设一个树形dp,f[i][j]表示i的子树中,i所在联通块的大小为j的方案数有多少特别的,我们用f[i][0]表示∑f[i][j] (j>=k)那么可以写出以下转移:f[x][i+j]+=f[x][i]*f[v][j] (j>0)f[x][i]=f[x][i]*f[v][0]答案就是f[root][0]#includ...原创 2018-04-27 21:08:43 · 296 阅读 · 0 评论 -
Jzoj5674 香槟
有一棵 n 个节点的树,初始时所有节点都为空。Alan 和 Bob 在树上玩游戏,双方轮流进行,Alan先手。每轮中,Alan 可以选择一个空节点 x,在 x 上放一个波澜哥;Bob 每轮可以选择一个空节点 y,将 y 节点以及所有与 y 相邻的节点上都放置一个面筋哥。可能存在节点既有波澜哥,又有面筋哥。当所有节点非空时,游戏结束。由于面筋哥比较得劲,Alan 和 Bob 认为如果一个节点上有原创 2018-04-20 21:43:27 · 370 阅读 · 0 评论 -
Jzoj5661 药香沁鼻
有依赖关系的树形背包,算是又积累了一种做法一个经典的做法就是设f[x][j]表示在x子树内,容量为j的最大获利那么转移可以写成 f[x][j]=max{f[x][j],f[x][j-k]+f[v][k]} v是x的子树我们在dp时记录背包的剩余空间,就可以得到80分一个更好的优化就是用dfs序,复杂度直接下降为O(nm)当然最快的做法还是直接在树上做,我们还是设f[x][j]表原创 2018-04-20 20:56:36 · 283 阅读 · 0 评论 -
51Nod1679 连通率
题目看这里一个简单的计数问题我们先考虑O(n^2)的做法对每个点dfs一次,求出d[i]表示i的深度,那么对答案贡献就是Σ2^(n-d[i])那么我们考虑用数据结构动态维护这个d[i],显然可以用线段树来维护dfs序做到复杂度O(n lg n) 效率很高rank8看了下solution突然才发现别人都不是这么做的!不管了反正跑得过而且跑的快。。就是代原创 2018-02-22 21:51:15 · 247 阅读 · 0 评论 -
Jzoj2183 树
图论中的树为一个无环的无向图。给定一棵树,每个节点有一盏指示灯和一个按钮。如果节点的按扭被按了,那么该节点的灯会从熄灭变为点亮(当按之前是熄灭的),或者从点亮到熄灭(当按之前是点亮的)。并且该节点的直接邻居也发生同样的变化。 开始的时候,所有的指示灯都是熄灭的。请编程计算最少要按多少次按钮,才能让所有节点的指示灯变为点亮状态。高斯消元裸题好吧如果出到100W就不能这么做了(虽然说这题原创 2018-01-20 17:21:34 · 244 阅读 · 0 评论 -
Jzoj3176 蜘蛛侠
话说世界上有很多超级英雄:蝙蝠侠,蜘蛛侠,超人,名字都写不出来的人等等。在他们之中有一个叫Kickass。今天他想模仿蜘蛛侠,所以他选择了一排高楼来跳。具体来说,他选择了一列N幢高楼,从左到右标号为1到N。一开始他在第K幢高楼。不幸的是,Kickass能力非常有限,只能跳到向左或向右相邻的高楼,而且他要跳到的楼的高度必须不能大于他现在处在的楼的高度。Kickass不想自己看起来很渣渣,所以原创 2018-01-07 22:06:42 · 445 阅读 · 0 评论 -
Jzoj3528 图书馆
圣玛格丽特大图书馆是一座由石材砌成的角柱型高塔,是欧洲屈指可数的巨大书库。图书馆整面墙壁都是巨大的书架,书架与书架之间就像巨大的迷宫一般,以细窄的木制楼梯连结。大图书馆的最高处是一个绿意盎然的植物园,维多利加正在那无聊地看着书。今天,一如往常地,久城要爬上这迷宫般的楼梯给维多利加送讲义。图书馆墙壁上有N个平台,编号为1到N,入口为1号,植物园为N号。有M个连接两个不同平台的楼梯,爬每个楼梯需要原创 2018-01-22 19:18:05 · 447 阅读 · 0 评论 -
Jzoj4771 爬山
国家一级爬山运动员h10今天获得了一张有着密密麻麻标记的地图,在好奇心的驱使下,他又踏上了去爬山的路。对于爬山,h10有一个原则,那就是不走回头路,于是他把地图上的所有边都标记成了有向边。他决定从点S出发,每到达一个新的节点他就可以获得一定的成就值。同时h10又是一个很珍惜时间的运动员,他不希望这次爬山的成就值白白浪费,所以最后他一定要在一个存档点停下,保存自己的成就值。请你计算出在此次爬原创 2017-11-24 20:26:30 · 633 阅读 · 0 评论 -
Jzoj5455【NOIP2017提高A组冲刺11.6】拆网线
企鹅国的网吧们之间由网线互相连接,形成一棵树的结构。现在由于冬天到了,供暖部门缺少燃料,于是他们决定去拆一些网线来做燃料。但是现在有K只企鹅要上网和别人联机游戏,所以他们需要把这K只企鹅安排到不同的机房(两只企鹅在同一个机房会吵架),然后拆掉一些网线,但是需要保证每只企鹅至少还能通过留下来的网线和至少另一只企鹅联机游戏。所以他们想知道,最少需要保留多少根网线?今天考场上又zz了,只切了第二原创 2017-11-06 16:41:32 · 505 阅读 · 0 评论 -
Jzoj4890 随机游走
今天切了一道期望dp的难(shui)题,写写这一道更难的题YJC最近在学习图的有关知识。今天,他遇到了这么一个概念:随机游走。随机游走指每次从相邻的点中随机选一个走过去,重复这样的过程若干次。YJC很聪明,他很快就学会了怎么跑随机游走。为了检验自己是不是欧洲人,他决定选一棵树,每条边边权为1,选一对点s和t,从s开始随机游走,走到t就停下,看看要走多长时间。但是在走了10000000步之后,仍原创 2017-11-02 21:04:23 · 458 阅读 · 0 评论 -
Jzoj5444【NOIP2017提高A组冲刺11.2】救赎
“是的。”我回答,“我不会忘记你。在森林里我会一点点记起往日的世界。要记起的大概很多很多:各种人、各种场所、各种光、各种歌曲……”——村上春树《世界尽头与冷酷仙境》 在没有心存在的世界尽头,音乐能够使小镇居民消散的心重新聚拢成形。作为镇子里唯一一个还残留着些许音乐记忆的人,我逐渐记起了往昔点滴…… 记忆中有一棵无根树,有n个节点。对于一棵有根树的每一个非叶子节点,我们都等概原创 2017-11-02 15:38:19 · 386 阅读 · 0 评论 -
Jzoj4727 挺进
题意:给你一颗树,要求断掉一条边,使得剩下两个联通快的直径之和最大一看就是树形DP嘛,c1表示最长边c2次长,f表示父亲部分的最长路上面做法不讲,我们讲一种比较新奇的方法假设我们枚举断哪一条边,在lgn时间内求出两个联通快的直径不就行了嘛怎么做呢,我们发现,可以用树的dfs序来维护,我们用一个线段树维护一个区间内的直径的端点和长度额,如何合并?我们假设两块的直径端点分别为x原创 2017-10-17 20:23:56 · 635 阅读 · 0 评论 -
Jzoj5426 摘Galo
0v0在野外看到了一棵Galo树,看到食物的0v0瞪大了眼睛,变成了OvO。这棵Galo树可以看做是一棵以1号点为根的n个点的有根数,除了根节点以外,每个节点i都有一个Galo,美味度为w[i]。OvO发现,如果她摘下了i号Galo,那么i的子树中的Galo以及i到根的路径上的其他Galo都会死掉。OvO的袋子只能装k个Galo,她的嘴巴里还能叼1个,请问她所摘Galo的美味度之和的最原创 2017-11-08 16:15:00 · 376 阅读 · 0 评论 -
Jzoj4625 树
如果∑d≠2n-2说明错了否则,我们先构造出这棵树的直径,若一个di>2则我们将d-2个节点与其相连,所以answer=n-1-∑(max(2,d[i])-2)#includeinline int max(int a,int b){ return a>b?a:b; }int main(){ int n,d[20],ds=0,m; scanf("%d",&n); for(int原创 2017-10-11 21:23:35 · 274 阅读 · 0 评论 -
Jzoj3906 魏传之长坂逆袭(梦回三国系列)
【题目背景】众所周知,刘备在长坂坡上与他的一众将领各种开挂,硬生生从曹操手中逃了出去,随后与孙权一起火烧赤壁、占有荆益、成就霸业。而曹操则在赤壁一败后再起不能,终生无力南下。建安二十五年(220年),曹操已到风烛残年,但仍难忘当年长坂的失误,霸业的破灭。他想如果在刘备逃亡的路中事先布下一些陷阱,便能拖延刘备的逃脱时间了。你作为曹操身边的太傅,有幸穿越到了208年的长坂坡,为大魏帝国贡献一份原创 2017-10-03 22:57:46 · 356 阅读 · 0 评论 -
LOJ 6495~6497「雅礼集训 2018 Day1」
.真是看懂std就秒的三道题,但是看懂就很难啊(感谢superguymj和memset0两个大佬的代码)稍微说一下题解-------------------------------------------------------- 「雅礼集训 2018 Day1」树这道题的正解被superguymj大佬吊打了,原来O(n⋅2n)O(n·2^n)O(n⋅2n)变成了O(n4)O(n^4)...原创 2019-01-04 08:47:08 · 1357 阅读 · 1 评论