摘要:
思路分析 自认为是一道很好的思维题。 直接看上去的想法是: 跑一个生成树,每一次加的边颜色交替进行,直到拉出生成树。 仔细想想,发现可能无法保证最后是一棵树而不是森林,也是说输出都是 $-1$ 。 然后,我这个弱智就没有任何思路了。 这时,想起“拖帝”的名言:正难则反。于是考虑先筛去不合法的情况。( 阅读全文
摘要:
老是忘记怎么用,自己写一个用作备忘录吧。 首先需要的头文件: #include <random> 或者是 #include <bits/stdc++.h> //万能头 yyds 先制定随机种子(关系到之后的随机数) std::mt19937 myseed(114514); 对于一般的情况,我们只需要 阅读全文
摘要:
因为 $1 \leq a,b,c,d \leq 100$ 所以每一个颜色都有属于自己的联通块。 考虑 $a = b=c=d=1$ 的情况。 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 阅读全文
摘要:
题目链接 思路分析 自认为是一道很好的构造题,但是我并不会做。 看了题解后有一些理解,在这里再梳理一遍巧妙的思路。 我们先来看这样的一张图: 我们发现当去掉叶子节点的父亲时,剩下树的价值和等于叶子节点的价值和,显然全是正的不太可能。 对于叶子节点我们不妨设他们的权值都是 $1$ ,此时若删去最大的祖 阅读全文
摘要:
题目链接 思路分析 看到题目中 $n,m \leq 1000$ ,故直接考虑 $O(n^2)$ 级别做法。 我们先把所有的点按照 $val$ 值从小到大排序,这样的话二维问题变成序列问题。 设 $f_i$ 表示走到第 $i$ 个点的价值的期望。 先列出裸的 $dp$ 方程:($Num$ 表示符合条件 阅读全文
摘要:
题目链接 思路分析 看到这道题首先想到的此题的树上版本。(不就是树链剖分的板子题么?) 但是此题是图上的两点间的走法,自然要想到是圆方树。 我们先无脑构建出圆方树。 我们先猜测:设后加入的节点权值为 inf,直接再圆方树上做述链剖分? 看上去很简单,但是完全不对,考虑同一个点双的情况。 他们在圆方树 阅读全文
摘要:
前言 ~~模拟赛要求图上距离为 $k$ 的节点对数,就学了一下圆方树~~ 众所周知,树有很多美妙的性质,但是有些题目非把树上问题搬到图上,这时我们就要上圆方树了。 那么圆方树是什么呢?~~(是圆形节点和方形节点构成的树)~~ 圆方树($Block \ forest$ 或 $Round-square 阅读全文
摘要:
题目描述 pks 得到了一棵 $N$ 个节点,权值为 $1\sim N$ 的 $AVL$ 树,他觉得这棵树太大了,于是他想要删掉一些节点使得最后剩下的树恰好有 $K$ 个节点。如果 pks 删掉了一个节点,那么以这个节点为根的整棵子树都会被删掉。最后剩下的树必须依旧是一棵 $AVL$ 树。 pks 阅读全文