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
BZOJ3307
【
BZOJ3307
】雨天的尾巴 题解(树链剖分+树上差分)
题目链接题目大意:给定一颗含有$n$个结点的树,每次选择两个结点$x$和$y$,对从$x$到$y$的路径上发放一带$z$类型的物品。问完成所有操作后每个结点发放最多的时哪种物品。普通的树链剖分貌似也可以做这道题,可以记录一个$c$数组用来记录结点中每种物品的个数,然后暴力乱搞。空间可能会炸。这时候我们需要一种新算法:树上差分。关于树上差分,有需要的同学可以去看大佬的博客,我这里说一下思想。对于序列
我亦如此向往
·
2020-06-20 16:00
BZOJ3307
雨天的尾巴
ProblemBZOJ权限题良心洛谷Solution这道题目的花呢,本来想缩先树剖(可能需要长链剖分?),再搞一个标记永久化,然后最后合并答案,不过可能会卡空间。。时间复杂度呢是O(nlog2n)O(nlog2n)然后boshi表示:“为什么不差分然后再自底向上合并线段树呢”于是就做到了O(nlogn)O(nlogn)好优秀的做法qwqqq窝getlca写残了导致调了很久Code#include#
Rayment_cc
·
2018-05-24 22:42
线段树
好题集
BZOJ
BZOJ3307
雨天的尾巴
ProblemBZOJ权限题良心洛谷Solution这道题目的花呢,本来想缩先树剖(可能需要长链剖分?),再搞一个标记永久化,然后最后合并答案,不过可能会卡空间。。时间复杂度呢是O(nlog2n)O(nlog2n)然后boshi表示:“为什么不差分然后再自底向上合并线段树呢”于是就做到了O(nlogn)O(nlogn)好优秀的做法qwqqq窝getlca写残了导致调了很久Code#include#
Rayment_cc
·
2018-05-24 22:42
线段树
好题集
BZOJ
bzoj3307
雨天的尾巴(树上差分+线段树合并)
每个点一颗权值线段树,因为只有最后一次询问,因此我们可以树上差分,最后一遍dfs合并出来。点数应该最多是4n4n的,所以复杂度应该还是O((n+m)log1e9)O((n+m)log1e9)的#includeusingnamespacestd;#definelllonglong#defineinf0x3f3f3f3f#defineN100010inlinechargc(){staticcharbu
Icefox_zhx
·
2018-05-24 16:25
-----树-------
bzoj
线段树
差分
[
bzoj3307
]雨天的尾巴【线段树】
【题目链接】http://www.lydsy.com/JudgeOnline/problem.php?id=3307【题解】首先这道题所有的修改可以一次处理完。若有一条边(u,v)(u,v)在u,vu,v上各打一个+1+1的标记,在lca(u,v),dad(lca(u,v))lca(u,v),dad(lca(u,v))上各打一个−1−1的标记。现在考虑怎么统计答案,dfs遍历整棵树,每个节点用权值
VanishD
·
2018-03-13 21:34
【线段树】
bzoj3307
雨天的尾巴(线段树合并)
DescriptionN个点,形成一个树状结构。有M次发放,每次选择两个点x,y对于x到y的路径上(含x,y)每个点发一袋Z类型的物品。完成所有发放后,每个点存放最多的是哪种物品。Input第一行数字N,M接下来N-1行,每行两个数字a,b,表示a与b间有一条边再接下来M行,每行三个数字x,y,z.如题Output输出有N行每i行的数字表示第i个点存放最多的物品是哪一种,如果有多种物品的数量一样,
Hzoi_Anonymity
·
2017-10-29 21:35
线段树
树上差分
【
BZOJ3307
】雨天的尾巴(权限题)
DescriptionN个点,形成一个树状结构。有M次发放,每次选择两个点x,y对于x到y的路径上(含x,y)每个点发一袋Z类型的物品。完成所有发放后,每个点存放最多的是哪种物品。Input第一行数字N,M接下来N-1行,每行两个数字a,b,表示a与b间有一条边再接下来M行,每行三个数字x,y,z.如题Output输出有N行每i行的数字表示第i个点存放最多的物品是哪一种,如果有多种物品的数量一样,
dcx2001
·
2017-10-12 21:15
树链剖分
BZOJ权限题
线段树
差分
BZOJ3307
: 雨天的尾巴
线段树合并在链的两端x,y各打上1个z的加标记,在LCA(x,y)打上1个z的减标记,在fa(LCA(x,y))打上1个z的减标记,每个节点和所有孩子的线段树合并,查询时线段树上二分code:#include#include#include#include#include#include#include#include#include#include#include#include#include
L_0_Forever_LF
·
2017-04-26 19:29
BZOJ
线段树
[
BZOJ3307
][线段树合并]雨天的尾巴
题意N个点,形成一个树状结构。有M次发放,每次选择两个点x,y对于x到y的路径上(含x,y)每个点发一袋Z类型的物品。完成所有发放后,每个点存放最多的是哪种物品。看POPOQQQ大神的题解吧……http://blog.csdn.net/popoqqq/article/details/45674373之前觉得线段树合并没什么用,现在打脸了……#include#include#include#incl
LowestJN
·
2017-03-03 19:20
线段树
线段树合并
【
bzoj3307
】雨天的尾巴 线段树+树链剖分
考虑如果在序列上的话,每次只需要在区间左端点+1,右端点-1,最后用线段树一起统计即可。在树上的话,就用树链剖分转换成序列,每一次操作,对应修改O(logn)条重链上的标记,最后用线段树来统计。#include #include #include #include #include #include #include #include #definemaxn200100 usingnamespa
u012288458
·
2016-04-14 09:00
bzoj3307
雨天的尾巴
3307:雨天的尾巴TimeLimit: 10Sec MemoryLimit: 128MBSubmit: 258 Solved: 121[Submit][Status][Discuss]DescriptionN个点,形成一个树状结构。有M次发放,每次选择两个点x,y对于x到y的路径上(含x,y)每个点发一袋Z类型的物品。完成所有发放后,每个点存放最多的是哪种物品。Input第一行数字N,M接下
AaronGZK
·
2016-02-05 12:00
线段树
树链剖分
bzoj
上一页
1
下一页
按字母分类:
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
其他