题目大意:给定一棵树,有mm个操作,每次给一条路径上的每个点分发一个颜色为zz的物品,所有操作结束后输出每个点上数量最多的是哪种物品
对于每个操作,我们在xx和yy上各打上一个插入zz的标记,然后在LCA(x,y)LCA(x,y)和Fa(LCA(x,y))Fa(LCA(x,y))上各打上一个删除zz的标记
然后我们对zz维护线段树
DFS一遍,对于每个节点进行如下操作:
1.将所有子节点的线...
分类:
其他好文 时间:
2015-05-12 23:09:22
阅读次数:
138
clj在某场hihoCoder比赛中的一道题,表示clj的数学题实在6,这道图论貌似还算可以。。。题目链接:http://hihocoder.com/problemset/problem/1167由于是中文题目,题意不再赘述。对于任意两条小精灵的活动路径a和b,二者相交的判断条件为b的两个端点的LC...
分类:
其他好文 时间:
2015-05-10 21:54:31
阅读次数:
185
通过这题我知道了一个鬼故事,trunc(ln(128)/ln(2))=6……以后不敢轻易这么写了好了言归正传,这题明显的构建虚树,但构建虚树后怎么树形dp呢?由于虚树上的点不仅是议事会还有可能是议事会的LCA,所以我们要先求出虚树上每个点是被那个议事会管理的,这我们可以通过两遍dfs求出(儿子更新父...
分类:
其他好文 时间:
2015-05-09 17:33:27
阅读次数:
178
求三个点之间距离和的最小值,画个图想想就可以知道这个值就是两两距离之和除以2 两组数据之间要有一个换行 这里PE了很多次 1 #include 2 #include 3 #include 4 using namespace std; 5 const int maxn = 1...
分类:
其他好文 时间:
2015-05-07 18:40:16
阅读次数:
114
求两节点之间的距离,直接上Tarjan跑一遍。和上一题差不多就不说了。。 主要就是这里询问很多,用vector跑的很慢,无奈还不会邻接表,赶紧去学。。 1 #include 2 #include 3 #include 4 #include 5 #include ...
分类:
其他好文 时间:
2015-05-07 15:52:47
阅读次数:
133
clj在某场hihoCoder比赛中的一道题,表示clj的数学题实在6,这道图论貌似还算可以。。。题目链接:http://hihocoder.com/problemset/problem/1167由于是中文题目,题意不再赘述。对于任意两条小精灵的活动路径a和b,二者相交的判断条件为b的两个端点的LC...
分类:
其他好文 时间:
2015-05-07 13:50:59
阅读次数:
187
算是LCA裸题吧,d[x]记录从根节点到x节点的距离然后求出x,y的LCA z 结果就是d[x]+d[y]-2*d[z] 我是用Tarjan写的,麻烦的地方就是怎么离线ans 刚开是学LCA,cheerup!! 1 #include 2 #include 3 #...
分类:
其他好文 时间:
2015-05-07 06:21:55
阅读次数:
85
题目大意:给出一棵树和树上的一些路径求些路径有多少对是相交的 想一下就可以发现,每两条相交路径的交点中肯定有一个点是其中一条路径的两个端点的LCA 然后求出 1、每个点有多少条路径经过 2、每个点是几条路径的LCA 最后算一下就有ans,具体算法就不赘述 1、用树上前缀和计算 { ...
分类:
其他好文 时间:
2015-05-07 00:40:45
阅读次数:
167
Tarjan-LCA算法:
对于每一点u:
1.建立以u为代表元素的集合。
2.遍历与u相连的节点v,如果没有被访问过,对于v使用Tarjan-LCA算法,结束后,将v的集合并入u的集合。
3.对于与节点u相关的询问(u,v),如果v被访问过,则结果就是v所在集合的所代表的元素。求(u,v)的最近公共祖先节点,则询问时调用QEdges[k].lca = find(QEdges[k].to);...
分类:
其他好文 时间:
2015-05-04 11:57:14
阅读次数:
116