#####2018.1.23
- T1 裸的线段树
- T2 题意:维护一个有点权的树,支持修改单点权值,查询某点子树点权和。
题解:树的dfs序中,一个点的子树是一段连续的区间。可以以树的dfs序作为下标,维护一个支持单点修改,区间求和的线段树就可以了。
- RE大概是因为直接修改和查询结点下标了,应该用每个结点的dfs序维护线段树。
- TLE大概是因为常数巨大。比如说我,开vector存树+两次O(nlogn)快排buildtree。事实上并不需要快排,对于每个结点单独修改线段树的结点就ojbk了,我是弱智。
- T3 裸的二维线段树(树套树)= =但是Black神犇说KDTree复杂度可以爆踩就很gg了。
#####2018.1.24 - T1 树上O(logn)求两点路径长。比较经典的LCA题。
显然有dis(a,b) = dis(root,a) + dis(root,b) - 2*dis(root,lca),O(n)预处理一下根到每个点的距离即可。 - T2 貌似就比昨天T2多了个区间修改。
- T3 我用的权值线段树,连离散化都不需要的。
- WA大概是因为当一个数不允许删除操作(即个数为零)的时候没有想到路径上的点权同样不需要减一。我是弱智。
#####2018.1.25
- T1 题目即题解,树链剖分LCA。但是貌似倍增卡一卡空间也就过了?
- T2 题意询问树上路径经过点权中位数,可以离线。主席树或树上莫队。
- 主席树做法:O(nlogn)维护根节点到每个节点时的可持久化权值线段树,O(logn)查找。
q(u,v)=q(rt,v)+q(rt,v)-q(rt,lca)-q(rt,lca->father)
- 主席树做法:O(nlogn)维护根节点到每个节点时的可持久化权值线段树,O(logn)查找。
- T3 树链剖分裸题
#####2018.3.11
- 快读写挂爆零了
#####2018.3.17
- 忘记开long long了
- 而且开long long INF = 1e18
- 图的bfs应该判断vis[to]!=0入队