树
heheda_is_an_OIer
这个作者很懒,什么都没留下…
展开
-
bzoj 1509 逃学的小孩
求出树的直径,可以证明那两个同学家一定分别是直径上的两个点。枚举点即可ps 某些大牛说可以两遍bfs求直径,方法是第一遍求任意一个点的最远点,第二遍求这一个点的最远点,就一定是直径。然而我并没有用。#include#include#include#include#include#define md#define ll long long#define inf (int) 1e9#define原创 2015-11-16 10:37:33 · 348 阅读 · 0 评论 -
bzoj 2594 水管局长 | LCT | 最小生成树
将所有操作逆序,删边就成了加边,做LCT维护最小生成树即可。把边i表示成点i+n,那么加一条边x,y就相当于link(x,i+n) link(y,i+n) 删边同理。我的release写成了“上放标记”了 TAT#include#include#include#include#include#define md#define ll long long#define inf (int) 1e9#de原创 2015-11-16 10:39:55 · 580 阅读 · 0 评论 -
bzoj 1818/1732 聚会
首先,答案的点一定在三组lca中的一个上它在那个最深的lca上,不要问我为什么或者,这三组lca一定有两个重复的,答案是那个不重复的。#include#include#include#include#include#define ll long long#define inf 1e9#define eps 1e-10#define md#define N 500010using namespace原创 2015-11-16 10:40:30 · 302 阅读 · 0 评论 -
bzoj 3589 动态树
lct水题?逗你玩!其实就是线段树的裸题,不明白为什么网上都要用容斥。tle是线段树结构写错了+dep[y]wa是因为应该先下放ad标记,再下放tag标记#include#include#include#include#include #define md#define ll long long#define inf (int) 1e9#define eps 1e-8#define N 30001原创 2015-11-16 10:39:03 · 757 阅读 · 0 评论 -
bzoj 3631 松鼠的新家
自己乱搞了一个线段树维护dfs序,结果卡着内存过了。dfs序维护的是子节点和父节点的关系,并不是路径上的关系。然而膜拜题解发现只要在倍增lca的时候打上标记就可以了。不会On求lca,先挖一个坑#include#include#include#include#include#define md#define ll long long#define inf (int) 1e9#define原创 2015-11-16 10:37:47 · 289 阅读 · 0 评论