E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
HAOI2015
【
HAOI2015
】树上染色 - 树形 DP
题目描述有一棵点数为N的树,树边有边权。给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并将其他的N-K个点染成白色。将所有点染色后,你会获得黑点两两之间的距离加上白点两两之间的距离的和的受益。问受益最大值是多少。输入输出格式输入格式:第一行包含两个整数N,K。接下来N-1行每行三个正整数fr,to,dis,表示该树中存在一条长度为dis的边(fr,to)。输入保证所有点之
lrj124
·
2019-03-20 16:00
[bzoj4033][
HAOI2015
]树上染色_树形dp
树上染色bzoj-4033HAOI-2015题目大意:给定一棵n个点的树,让你在其中选出k个作为黑点,其余的是白点,收益为任意两个同色点之间距离的和。求最大收益。注释:$1\len\le2000$想法:我们看到了数据范围...一般树上问题这个数据范围一般就是背包或者数据结构,这题我们考虑树上背包。我们考虑枚举每一棵子树选取一些黑点的贡献。但是这样选取是有后效性的,因为内部点的选取可能在外面选取同样
JZYshuraK_彧
·
2018-08-31 23:00
【
HAOI2015
】树上染色(树型dp)
题目描述有一棵点数为N的树,树边有边权。给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并将其他的N-K个点染成白色。将所有点染色后,你会获得黑点两两之间的距离加上白点两两之间的距离的和的受益。问受益最大值是多少。输入输出格式输入格式:第一行包含两个整数N,K。接下来N-1行每行三个正整数fr,to,dis,表示该树中存在一条长度为dis的边(fr,to)。输入保证所有点之
WWWengine
·
2018-07-30 13:19
动态规划
【BZOJ4033】[
HAOI2015
] 树上染色(树形DP)
点此看题面大致题意:给你一棵点数为N的带权树,要你在这棵树中选择K个点染成黑色,并将其他的N-K个点染成白色。要求你求出黑点两两之间的距离加上白点两两之间距离的和的最大值。树形DPDPDP这道题应该是一道比较显然的树形DPDPDP,我们可以用f[x][i]来表示当前节点为x时有i个黑色节点时能取得的最大值。则转移方程应为(伪代码)f[x][i]=max(f[x][i],f[x][i-j]+f[x的
chenxiaoran666
·
2018-07-19 22:01
BZOJ
动态规划
bzoj4033 [
HAOI2015
]树上染色
Description有一棵点数为N的树,树边有边权。给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并将其他的N-K个点染成白色。将所有点染色后,你会获得黑点两两之间的距离加上白点两两之间距离的和的收益。问收益最大值是多少。输入保证所有点之间是联通的。N#include#include#include#include#include#definerep(i,st,ed)f
olahiuj
·
2018-04-12 20:33
树形dp
c++
[BZOJ4034][
HAOI2015
]树上操作(树链剖分+线段树)
4034:[
HAOI2015
]树上操作TimeLimit:10SecMemoryLimit:256MBSubmit:6487Solved:2161[Submit][Status][Discuss]Description
Effervescence
·
2018-02-27 22:21
线段树
树链剖分
【BZOJ】[
HAOI2015
]树上操作-DFS序
传送门:点击打开链接题意:有一棵点数为N的树,以点1为根,且树点有边权。有M个操作,分为三种:操作1:把某个节点x的点权增加a。操作2:把某个节点x为根的子树中所有点的点权都增加a。操作3:询问某个节点x到根的路径中所有点的点权和。数据范围:N,Musingnamespacestd;typedeflonglongll;constintN=1e5+2;intn,m,root=1,cnt,tot,in
ccosi
·
2018-02-27 21:47
线段树
[BZOJ4033][
HAOI2015
]树上染色 树形DP
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4033我们考虑用$f[i][j]$记录以第$i$个节点为根的子树,把$j$个节点染成黑色对最终的答案的最大贡献。在合并子树更新状态的时候,只需要考虑根与这棵子树的连边对最终答案的贡献即可,因为边的贡献只与两边点的数目有关。注意更新状态时要像背包一样倒着更新。1#include2#includ
halfrot
·
2017-11-09 22:00
bzoj4034: [
HAOI2015
]树上操作(树链剖分+线段树)
题目传送门水经验。解法:就写个树剖呗。然后用线段树维护一下呗。维护整一段的和。打个懒标记。代码实现:#include#include#include#include#include#include#includeusingnamespacestd;typedeflonglongll;structnode{intx,y,next;}a[210000];intlen,last[110000];void
Hanks_o
·
2017-10-30 11:14
树链剖分
线段树
BZOJ
bzoj4034 [
HAOI2015
]树上操作(树链剖分)
子树修改,通过dfn序可以变成区间修改。然后就是裸题了。#include#include#definelllonglong#defineN100010intn,a[N],m,num=0,h[N],dep[N],size[N],son[N],fa[N],top[N],in[N],out[N],dfn=0,w[N];structedge{intto,next;}data[N'9'){if(ch=='-
Icefox_zhx
·
2017-09-08 09:28
bzoj
树链剖分
【
HAOI2015
】T1树形Dp
题意:一棵树,在里面选出k个黑点,剩下的点是白点,使白点之间两两距离之和和黑点之间两两距离之和的和最大分析:还是图样..一开始想到了点分治,可是树的分治一般处理的是关于树的路径的问题。后来发现这道题的k明显是一种“资源”,又想到用树上的背包来搞,可是没做出,一直在想两两之间的距离怎么转移…:(状态显然,F[i][j]为以i为根的子树,选出j个黑点的最大值,考虑这玩意儿是否能转移如果硬要找到两两之间
Dr_Nobody
·
2017-08-11 08:35
树形Dp
树
【
HAOI2015
】T1树形Dp
题意:一棵树,在里面选出k个黑点,剩下的点是白点,使白点之间两两距离之和和黑点之间两两距离之和的和最大分析:还是图样..一开始想到了点分治,可是树的分治一般处理的是关于树的路径的问题。后来发现这道题的k明显是一种“资源”,又想到用树上的背包来搞,可是没做出,一直在想两两之间的距离怎么转移…:(状态显然,F[i][j]为以i为根的子树,选出j个黑点的最大值,考虑这玩意儿是否能转移如果硬要找到两两之间
Dr_Nobody
·
2017-08-11 08:35
树形Dp
树
【
HAOI2015
】T2 树状数组
题意:维护一棵树,要求可以支持1:单点权值加,2:以某点为根的子树中的所有点权值加,3:询问某点到根路径上的点权和分析:法1:树链剖分,以后来补吧…法2:线段树,与下面的大相径庭法3:树状数组维护欧拉序列。差分的思想与Dfs序结合,i点在Dfs序中的位置(进出等价)的前缀和就是i到根的权值和。对于第一个操作,在In[i]加,Out[i]+1减即可。第二个操作怎么办呢,难道要暴力加?那不就达到O(n
Dr_Nobody
·
2017-08-11 08:46
树状数组
【
HAOI2015
】T2 树状数组
题意:维护一棵树,要求可以支持1:单点权值加,2:以某点为根的子树中的所有点权值加,3:询问某点到根路径上的点权和分析:法1:树链剖分,以后来补吧…法2:线段树,与下面的大相径庭法3:树状数组维护欧拉序列。差分的思想与Dfs序结合,i点在Dfs序中的位置(进出等价)的前缀和就是i到根的权值和。对于第一个操作,在In[i]加,Out[i]+1减即可。第二个操作怎么办呢,难道要暴力加?那不就达到O(n
Dr_Nobody
·
2017-08-11 08:46
树状数组
bzoj P4034 [
HAOI2015
]树上操作
传送门这道题树剖也蛮裸的,观察一下下标数组我们发现每一棵子树在线段树的下标肯定是连续的,想想dfs的过程就知道了,然后我们就能用树剖维护子树了。通过这题我们也知道了树剖不仅能维护链,也能维护子树。这题也有更高超的方法,用线段树维护dfs序,对于dfs序中出现的节点我们一个取正一个取负,就可以直接上线段树了。树剖代码:#include#include#definelllonglongusingnam
Leo_Riddle
·
2017-07-31 01:01
bzoj
树链剖分
dfs序
线段树
bzoj
线段树
树链剖分
dfs序
bzoj 4034: [
HAOI2015
]树上操作 (树链剖分)
4034:[
HAOI2015
]树上操作TimeLimit:10SecMemoryLimit:256MBSubmit:3553Solved:1118[Submit][Status][Discuss]Description
clover_hxy
·
2016-12-30 10:01
树链剖分
[BZOJ4034][
HAOI2015
]T2 树链剖分+dfs序
常规题,比较特殊的操作是修改以x为根的子树的所有节点我们知道,这颗子树的dfs序一定是连续的,所以我们只需要对每个节点记录一下,最大的dfs序即可因为树剖要dfs,所以我们直接在第二次dfs时记录,但需要注意的是,因为我们最先对重链的节点编号,所以dfs时也必须先dfs重链我采取的办法是直接加边,因为边表保证了最后加的边最先扩展,或者也可以直接记录一下重边连的点(因为longlongWA了一次,树
Cabinfever
·
2016-11-02 22:00
bzoj
数据结构——树链剖分
BZOJ4034 [
HAOI2015
]T2 题解&代码
题意:有一棵有N个节点的树,以节点1为根,且点上有权。有M个操作,分为三种:操作1把节点x的点权增加a操作2把以节点x为根的树中所有点的点权都增加a操作3求节点x到根的路径中所有点的点权和分析:操作1和操作2本质上是没有区别的,区间修改和单点修改显然可以合并,求dfs序后线段树区间维护就可以了操作3是涉及路径的查询,和树剖很类似,但是比树剖简单很多【比如我求的deep完全没有用2333333】,按
Rainbow6174
·
2016-06-01 21:05
BZOJ
线段树
树链剖分
BZOJ学习记录
BZOJ4034 [
HAOI2015
]T2 题解&代码
题意:有一棵有N个节点的树,以节点1为根,且点上有权。有M个操作,分为三种:操作1把节点x的点权增加a操作2把以节点x为根的树中所有点的点权都增加a操作3求节点x到根的路径中所有点的点权和分析:操作1和操作2本质上是没有区别的,区间修改和单点修改显然可以合并,求dfs序后线段树区间维护就可以了操作3是涉及路径的查询,和树剖很类似,但是比树剖简单很多【比如我求的deep完全没有用2333333】,按
Rainbow6174
·
2016-06-01 21:00
BZOJ4034 [
HAOI2015
]T2 题解&代码
题意:有一棵有N个节点的树,以节点1为根,且点上有权。有M个操作,分为三种:操作1把节点x的点权增加a操作2把以节点x为根的树中所有点的点权都增加a操作3求节点x到根的路径中所有点的点权和分析:操作1和操作2本质上是没有区别的,区间修改和单点修改显然可以合并,求dfs序后线段树区间维护就可以了操作3是涉及路径的查询,和树剖很类似,但是比树剖简单很多【比如我求的deep完全没有用2333333】,按
Rainbow6174
·
2016-06-01 21:00
BZOJ4034——[
HAOI2015
]T2
1、题目大意:用一个数据结构支持树的点修改和子树修改、树上路径和2、分析:树链剖分裸题#include #include #include #include usingnamespacestd; #defineM1000000 #defineLLlonglong LLSize[M],value[M],Top[M],Fa[M],Height[M],num[M],left[M],right[M]; L
qzh_1430586275
·
2016-05-18 08:00
树链剖分
t2
bzoj
4034
HAOI2015
bzoj 4033: [
HAOI2015
]T1(树形DP)
4033:[
HAOI2015
]T1TimeLimit:10SecMemoryLimit:256MBSubmit:819Solved:375[Submit][Status][Discuss]Description
clover_hxy
·
2016-05-11 10:53
动态规划
dfs
bzoj 4033: [
HAOI2015
]T1(树形DP)
4033:[
HAOI2015
]T1TimeLimit: 10Sec MemoryLimit: 256MBSubmit: 819 Solved: 375[Submit][Status][Discuss
clover_hxy
·
2016-05-11 10:00
[BZOJ4033][
HAOI2015
]T1(树形dp)
题目描述传送门题解f[i][j]表示以i为根的子树中选了j个黑点的最大获益。考虑由子树转移到根,连接子树和根的路径的贡献为子树中所有黑(白)点和子树外所有黑(白)点的配对个数乘以边权。代码#include#include#includeusingnamespacestd;#defineLLlonglongconstintmax_n=2005;constintmax_e=max_n*2;LLn,k,
Clove_unique
·
2016-05-11 10:05
题解
dp
省选
[BZOJ4033][
HAOI2015
]T1(树形dp)
题目描述传送门题解f[i][j]表示以i为根的子树中选了j个黑点的最大获益。考虑由子树转移到根,连接子树和根的路径的贡献为子树中所有黑(白)点和子树外所有黑(白)点的配对个数乘以边权。代码#include#include#includeusingnamespacestd;#defineLLlonglongconstintmax_n=2005;constintmax_e=max_n*2;LLn,k,
Clove_unique
·
2016-05-11 10:05
题解
dp
省选
[BZOJ4033][
HAOI2015
]T1(树形dp)
题目描述传送门题解f[i][j]表示以i为根的子树中选了j个黑点的最大获益。考虑由子树转移到根,连接子树和根的路径的贡献为子树中所有黑(白)点和子树外所有黑(白)点的配对个数乘以边权。代码#include #include #include usingnamespacestd; #defineLLlonglong constintmax_n=2005; constintmax_e=max_n*2
Clove_unique
·
2016-05-11 10:00
dp
bzoj
HAOI
[dfs序 树状数组] BZOJ 4034 [
HAOI2015
]T2
两个log可以树链剖分day2听课时惊闻一个log的做法但我打low了,并不快...#include #include #include #defineVG[p].v usingnamespacestd; typedeflonglongll; inlinecharnc() { staticcharbuf[100000],*p1=buf,*p2=buf; if(p1==p2){p2=(p1=buf
u014609452
·
2016-04-27 19:00
BZOJ4034
HAOI2015
T2 线段树+DFS序
第一次知道了子树原来是用DFS序来维护,涨姿势了--。首先我们跑一边DFS序,每个点在入栈和出栈的时候分别记录一边,入栈编号为b[i],出栈标号为e[i],那么两次记录之间的所有的点就是该节点子树的DFS序,入栈为原值,出栈取负。然后就是用线段树来维护,询问1就是更新b[x]和e[x];询问2就是更新b[x]到e[x];询问3就是询问1到b[x]#include #include #include
WDZRMPCBIT
·
2016-04-26 23:00
【BZOJ4034】[
HAOI2015
]T2【树链剖分】
【题目链接】之前写的,忘了发上来了。裸树剖。/*FootprintsInTheBloodSoakedSnow*/ #include #include usingnamespacestd; typedeflonglongLL; constintmaxn=100005; intn,m,head[maxn],cnt,w[maxn],st[maxn],ed[maxn],size[maxn],top
BraketBN
·
2016-03-29 11:00
树链剖分
BZOJ-4034 T2 树链剖分
4034:[
HAOI2015
]T2TimeLimit:10SecMemoryLimit:256MBSubmit:1897Solved:615[Submit][Status][Discuss]Description
DaD3zZ
·
2016-03-27 21:00
BZOJ
树链剖分
[BZOJ4034][
HAOI2015
]树上操作(链剖+dfs序)
题目描述传送门题解一上午就调些傻逼题,最近数据结构老是写挂心里很不爽。fye告诉我说多写写就不会错了。傻逼链剖+dfs序,但是后来全改成LL才过了。也不知道为什么。学姐说LL和int必须强转,否则会出错。代码#include#include#include#include#includeusingnamespacestd;#defineN100005#defineLLlonglongintn,m,
Clove_unique
·
2016-03-21 11:26
题解
省选
树链剖分
dfs序
[BZOJ4034][
HAOI2015
]树上操作(链剖+dfs序)
题目描述传送门题解一上午就调些傻逼题,最近数据结构老是写挂心里很不爽。fye告诉我说多写写就不会错了。傻逼链剖+dfs序,但是后来全改成LL才过了。也不知道为什么。学姐说LL和int必须强转,否则会出错。代码#include#include#include#include#includeusingnamespacestd;#defineN100005#defineLLlonglongintn,m,
Clove_unique
·
2016-03-21 11:26
题解
省选
树链剖分
dfs序
[BZOJ][
HAOI2015
]T2(链剖+dfs序)
题目描述传送门题解一上午就调些傻逼题,最近数据结构老是写挂心里很不爽。fye告诉我说多写写就不会错了。傻逼链剖+dfs序,但是后来全改成LL才过了。也不知道为什么。学姐说LL和int必须强转,否则会出错。代码#include #include #include usingnamespacestd; #defineLLlonglong constintmax_n=1e5+5; constintma
Clove_unique
·
2016-03-21 11:00
bzoj
dfs序
HAOI
链剖
BZOJ4034T2
4034:[
HAOI2015
]T2TimeLimit:10SecMemoryLimit:256MBSubmit:1649Solved:538Description有一棵点数为N的树,以点1为根,且树点有边权
DCrusher
·
2016-03-01 19:09
线段树
树链剖分
bzoj 4034 [
HAOI2015
] T2(树链剖分,线段树)
4034:[
HAOI2015
]T2TimeLimit:10Sec MemoryLimit:256MBSubmit:1536 Solved:508[Submit][Status][Discuss]Description
hahalidaxin
·
2016-02-11 16:00
贴一下WC总结里提到的那道裸题吧。。。
[bzoj4034][
HAOI2015
]T2试题描述有一棵点数为N的树,以点1为根,且树点有边权。然后有M个操作,分为三种:操作1:把某个节点x的点权增加a。
xiao_ju_ruo_xjr
·
2016-02-06 12:00
BZOJ 4034: [
HAOI2015
]T2|线段树|树链剖分
写完裸的树练剖分后,发现似乎不用树剖,只用dfs序就可以然后就又写了一发,样例都过不了,发现是个错的…………………………树练剖分对于此题算是最裸的写法了单点修改,直接在线段树中暴力改这一个点就可以了子树修改,开一个数组记录子树大小,我们发现dfs标号的时候,以某个点为根的子树的所有点的标号都是连续的排在根之后的,所以就相当于在线段树中区间修改[pos[x],pos[x]+size[x]-1]询问某
ws_yzy
·
2016-01-20 08:00
树链剖分
151221
HAoi2015
总结
T1树形dpdp[i][j]表示以i为子树,j个黑点每次向上枚举更新即可复杂度O(n^2)考场上sb了被卡常,50滚粗T2树链剖分,不说了T3博弈论首先搜索打表找规律发现n/i一定时,sg一定然后分块大法好setvfk未来的论文题,刚好在考前一天看过还给bzoj写了spj。。。。http://www.cnblogs.com/gromah/p/4642344.html快去围观大神的博客悲剧又被卡常=
lcrtest
·
2015-12-21 19:00
基础
XOR
前缀和
[BZOJ4034] [
HAOI2015
]T2
传送门http://www.lydsy.com/JudgeOnline/problem.php?id=4034题目大意对于一棵树支持1:单点修改2:子树修改3:单点到根的路径查询题解ydc大爷的题解http://ydc.blog.uoj.ac/blog/336dfs序+线段树对于操作1,相当于对子树都加上同一个值对于操作2,相当于对于v的子树都加上(depu−depv+1)∗x,我们把它再拆一下就
slongle_amazing
·
2015-11-13 22:00
BZOJ 4034: [
HAOI2015
]T2( 树链剖分 )
树链剖分...子树的树链剖分序必定是一段区间 , 先记录一下就好了 --------------------------------------------------------------------------- #include<cstdio> #include<cstring> #include<algorithm> #
·
2015-11-02 12:13
ZOJ
树链剖分||dfs序 各种题
【bzoj4034】[
HAOI2015
]T2 有一棵点数为 N 的树,以点 1 为根,且树点有边权。然后有 M 个 操作,分为三种: 操作 1 :把某个节点 x 的点权增加 a 。
·
2015-10-31 08:08
DFS
【
HAOI2015
】【BZOJ4034】树上操作T2
Description有一棵点数为N的树,以点1为根,且树点有边权。然后有M个操作,分为三种:操作1:把某个节点x的点权增加a。操作2:把某个节点x为根的子树中所有点的点权都增加a。操作3:询问某个节点x到根的路径中所有点的点权和。Input第一行包含两个整数N,M。表示点数和操作数。接下来一行N个整数,表示树中节点的初始权值。接下来N-1行每行三个正整数fr,to,表示该树中存在一条边(fr,t
CreationAugust
·
2015-10-18 10:29
随便搞搞
模板题库
bzoj4034: [
HAOI2015
]T2
4034:[
HAOI2015
]T2TimeLimit:10Sec MemoryLimit:256MBSubmit:921 Solved:313[Submit][Status][Discuss]Description
acm_fighting
·
2015-10-08 19:00
【
HAOI2015
】【bzoj4033】【T1】
4033:[
HAOI2015
]T1TimeLimit:10SecMemoryLimit:256MBSubmit:226Solved:111[Submit][Status][Discuss]Description
FZHvampire
·
2015-06-21 11:00
BZOJ 4033
HAOI2015
T1 树形DP
题目大意:给定一棵树,你需要把其中的k个点染成黑色,使得黑色点两两之间的距离和+白色点两两之间的距离和最大,求最大值题解戳这里Orzydcydc看来我对于非线性的树形DP还是做得太少了QwQ#include #include #include #include #defineM2020 usingnamespacestd; structedge{ intto,f,next; }table[M>n>
PoPoQQQ
·
2015-05-15 13:00
bzoj
树形DP
BZOJ4033
BZOJ 4034
HAOI2015
T2 DFS序+线段树
题目大意:给定一棵树,每个点有点权,支持下列操作:1.某个点的点权+a2.某棵子树所有点权+a3.查询某个点到根路径上的点权和这个用入栈出栈序就可以了入栈为正,出栈为负,那么一个点到根路径上的权值和就是入栈出栈序中[1,入栈位置]的和而子树在入栈出栈序中是连续的,因此用线段树维护一下就可以了(似乎只要无脑链剖就可以了?#include #include #include #include #def
PoPoQQQ
·
2015-05-03 20:00
线段树
bzoj
dfs序
BZOJ4034
HAOI2015
解题报告
先给出ydc的题解地址:http://ydc.blog.uoj.ac/blog/336T1(树上染色):题目地址:http://cojs.tk/cogs/problem/problem.php?pid=1962首先有一个基础的想法是DP:令f[i][j]代表以i为根的子树中选了j个黑色点的最小代价(代价指该子树中所有边对答案的贡献之和)。在转移时,只需要枚举在当前儿子中放几个黑色点,计算这条父子边
wmdcstdio
·
2015-04-28 12:00
解题报告
HAOI
上一页
1
2
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他