摘要: "传送门" 题解 题面大意: $0.$区间加节点 $1.$区间换根 $2.$单点询问距离 如果没有$1$操作,因为区间加节点都是加在下面,所以我们可以直接把$n$棵树压成一棵树,直接询问即可 有$1$操作怎么办? 上面挖掘了一点性质, 加节点加在下面,那么我们可以先把节点都加上去,再询问 那么把操作 阅读全文
posted @ 2019-04-02 17:32 zzy2005 阅读(128) 评论(0) 推荐(1) 编辑
摘要: 题面 "bzoj" 题解 "bzoj2959: 长跑" 的弱化版 产生了环就并查集维护一下 Code cpp include define LL long long define RG register using namespace std; template inline void read(T 阅读全文
posted @ 2019-03-28 19:49 zzy2005 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 题面 "luogu" 题解 其实就是一颗二叉树 我们假设左儿子小于根,右儿子大于根 考虑树形$dp$ $f[u][i]$表示以$u$为根的子树,$u$为第$i$小 那么考虑子树合并 其实就是两个序列的合并 如果是左子树 枚举$j$为子树内有多少个数小于其根 那么以$i$为根的子树一定至少有$j$个 阅读全文
posted @ 2019-03-28 16:29 zzy2005 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 题面 "darkbzoj" 题解 $g[i]$表示长度为$i$的非降序列的个数 那么, $$ ans = \sum_{i=1}^{n}g[i] (n i)! g[i+1] (n i 1)! (i+1) $$ 怎么求$g[i]$呢 设$f[i][j]$为长度为$i$的非降序列,以最后一个数是$j$的数 阅读全文
posted @ 2019-03-28 07:55 zzy2005 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 题面 "UOJ" 题解 $LCT$板子题 维护一个最大生成树即可 Code cpp include define LL long long define RG register using namespace std; template inline void read(T &x) { x = 0; 阅读全文
posted @ 2019-03-26 21:28 zzy2005 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 题面 "luogu" bzoj是权限题.. 题解 $LCT$维护子树信息 因为$LCT$中有一些虚子树,$splay$维护不了. 所以要新开一个数组来记录 然后注意$link$时 是先$split(x,y)$ 因为一般的$link$是先$makeroot(x)$ 再$fa[x] = y$ 然而,如果 阅读全文
posted @ 2019-03-26 17:13 zzy2005 阅读(174) 评论(0) 推荐(1) 编辑
摘要: 题面链接 "bzoj" 题解 非常巧妙的一道题 类似[hnoi影魔] 每个点会给左右第一个大于它的点对产生贡献 可以用单调栈求出 这里有点小细节,就是处理相等的点时,最左边的点管左边的贡献,最右边的点管最右边的贡献 然后对于每个点,求出了一对$x, y$ 那么,对于询问区间$l,r$ 答案就是有多少 阅读全文
posted @ 2019-03-25 22:03 zzy2005 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 题面 "luogu" 题解 第一问: 设$f[i]$表示$i$步操作后,平均深度期望 $f[i] = \frac {f[i 1] (i 1)+f[i 1]+2}{i}=f[i 1]+\frac{2}{i}$ 第二问就比较难受了: $E(x)=∑_{i=1}^{x}P$ 随机变量$x$的期望为对于所有 阅读全文
posted @ 2019-03-18 13:03 zzy2005 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 题面 "luogu" 题解 $n \leq 15$ 状压 $f[i][S]$表示第$i$轮,吃过的集合为$S$ 正着转移好像有点复杂 考虑逆推转移(正着转移应该也行) $f[i][S]$表示$[1,i 1]$轮,吃过的集合为$S$,第$i$轮到第$k$轮最大期望得分 Code cpp include 阅读全文
posted @ 2019-03-18 12:47 zzy2005 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 题面 "luogu" 题解 $50pts:$显然是$3$进制状压$dp$ $100pts:$ 一行一行地考虑 $f[i][j][k]$表示前$i$行,有$j$列放了一个,有$k$列放了两个的方案数 转移很显然 Code cpp include define LL long long define R 阅读全文
posted @ 2019-03-17 22:31 zzy2005 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 题面 "luogu" 题解 首先,显然一个人实际位置只可能大于或等于编号 先考虑无解的情况 对于编号为$i$,如果确认的人编号在$[i,n]$中数量大于区间长度,那么就无解 记$S[i]$表示确认的人编号在$[i,n]$中数量 我们只要考虑剩下的$n m$人 $f[i][j]$表示编号$ =i$的, 阅读全文
posted @ 2019-03-17 22:23 zzy2005 阅读(127) 评论(0) 推荐(0) 编辑
摘要: "传送门" 题面描述 一颗n个节点的树,m次操作,有点权(该节点蚂蚁个数)和边权(相邻节点的距离)。 三种操作: 操作1:1 i x将节点i的点权修改为x。(1 define int long long define RG register using namespace std; template 阅读全文
posted @ 2019-03-08 21:58 zzy2005 阅读(240) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 题解 对于一个人有$k$个钥匙, 然后这$k$个猪圈就等于合并了 那么我们考虑转换问题, 一个人先把$k$个猪圈的猪全买了,再转让给后面的人 具体连边看代码.. Code cpp include include include define LL long long define RG 阅读全文
posted @ 2019-03-06 12:22 zzy2005 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 题解 最小费用最大流 每一天是一条边$(inf a[i], 0)$ 然后对于一类志愿者, 区间两端连一条$(inf, c[i])$ $S$向第一个点连$(inf, 0)$ 最后一个点向$T$连$(inf, 0)$ 然后跑最小费用最大流 这为什么是对的? 我们的目的变成用加的那些边,把最大流量填成$i 阅读全文
posted @ 2019-03-05 17:26 zzy2005 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 有的时候, 对于一个点,向一段区间内所有点连边 边数是$O(n^2)$的 复杂度爆炸 于是就有了线段树优化连边...... 线段树优化连边,利用到线段树的思想. 对于每个区间,新建一个节点,向子区间递归连边. 这样,当连向一段区间,就等于连向了所有其子节点 十分抽象. 看几道例题 [luogu 50 阅读全文
posted @ 2019-03-04 21:43 zzy2005 阅读(448) 评论(0) 推荐(0) 编辑