摘要:
此类型题目有两种比较常见的做法:树链剖分和树上差分。 本题有多组修改一组询问,因此树上差分会比树链剖分优秀很多。 这里两种方法都进行介绍。 树链剖分和树上差分的本质都是将一颗树转换为一个区间,然后进行操作。 也就是说,先将一颗树变成区间,然后套用线段树/树状数组和差分。 树链剖分的具体流程不多加叙述 阅读全文
摘要:
二分图匹配的常用算法有匈牙利算法和Dinic算法,这里只讨论前者。 所谓二分图,就是指一类能够被分成两半的图,其中每一半的点都没有任何边连接。 而二分图的匹配,就是指二分图的一个子图中任意两条边都没有公共点。(这个子图就是一个匹配) 本题求的是最大匹配数,顾名思义,就是匹配中边数最大为多少。 匈牙利 阅读全文
摘要:
在网上某篇神奇的教程和@codesonic 大佬的标程帮助下,我又肝完了Leafy Tree,跑过来写篇题解(好像以前写过一篇?) 什么是Leafy Tree? Leafy Tree由两种节点组成:辅助节点与叶子节点。 叶子节点储存值,而辅助节点储存左右孩子中大的那个值。 注意:辅助节点必定有两个孩 阅读全文
摘要:
看了一下题解里的zkw线段树,感觉讲的不是很清楚啊(可能有清楚的但是我没翻到,望大佬勿怪)。 决定自己写一篇。。。希望大家能看明白。。。 zkw线段树是一种优秀的非递归线段树,速度比普通线段树快两道三倍,同时代码量不大。 (当然,存在很多线段树可做zkw不可做的题) zkw线段树的核心思路就是先修改 阅读全文
摘要:
感觉数位DP有点弱,强化一下。。。 这道题是一道比较裸的数位DP。 我们用$dp[i][j]$表示长度为$i$最高位为$j$的windy数有多少个,状态转移方程为$dp[i][j]=\sum_{abs(j k) =2}{dp[i 1][k]}$。 然后有一个小优化(其实不能算优化吧),就是算一下输入 阅读全文
摘要:
题目:传送门 这道题根本不用lca,也没有部分分。。。 考虑求两个点xy的lca的深度。 我们将x到树根所有点的值都加1,然后查询y到根的和,其实就是lca的深度。 所以本题离线一下上树剖乱搞就可以了。 AC代码如下:718ms 17348Kib 阅读全文