02 2022 档案
摘要:link Solution 可以证明的是,答案两个端点一定在直径上面。然后我们列出式子,拆开绝对值,直接二分,用单调栈维护,确定 范围,判断是否合法。 复杂度 。 Code #include <bits/stdc++.h> using names
阅读全文
摘要:排队 link Desciption Solution 不难注意到的是,我们假设 为 之前 的值的个数,那么我们需要满足: \(\sum_{i=1}^{n} i-f_i=\sum_{i=1}^{n} i-\min(i
阅读全文
摘要:link Solution 考虑一种做法,因为合法答案值域里 幂次的个数很少,所以我们可以对于每一个位置记录它到下一个 次幂的差值,然后用线段树维护,然后每次赋值直接赋值即可,修改的话如果最小值 直接打懒标记即可,否则就继续递归,如果一个区间值全都相同(真实
阅读全文
摘要:link Solution 挺有意思的。 我们考虑如何进行暴力 dp。可以看出我们可以设 表示还剩区间 没有进行匹配,然后你构造的字符串已经考虑了前面 位和后面 位的方案数。转移式比较显然就不列了。 考虑优化的话可以发现我们可以
阅读全文
摘要:link Solution 我好蠢啊。。。 考虑如果x确定怎么办?我们可以直接递归,每次处理 的最大贡献,然后找到在这个区间里面编号最小的区间,然后两边递归下去。考虑这样的复杂度,因为最多 个区间,所以复杂度是 \(
阅读全文
摘要:link Solution 首先不难想到网络流的做法,即每个点 连 , 连 ,然后 连 ,跑最大流即可。 考虑到最大流等于最小割,所以我们考虑用 dp 去优化网络流。我们可以发现我们从前往
阅读全文
摘要:link Solution 注意到不互质的数相对位置一定不改变,也就是说如果我们先手钦定了不互质的数之间的大小关系,那么后手一定是做一次 topo,每次选最大的出来。 那么,作为先手,我们肯定是选最小值当根,然后依次从小到大找能够当下一位的点连边,不过这里需要递归,而不能直接连,因为假如 \(1,2
阅读全文
摘要:T1 Solution 比较水,就不说了。 T2 Solution 就是暴力优化,不知道复杂度为哈对,代码也过不了,就不放了。 T3 Solution 考虑暴力,即每次每个点向可以一波传染的点连边,然后缩点,求无入度的点数即可。 考虑优化,你发现对于两个点可以在点分树上一个点考虑先走到该点再到另一个
阅读全文
摘要:link Solution 然而并没有做出来,听wy讲的。 我们考虑倒着来,那么我们只需要记录下哪些在后面会 pushdown ,这样这条边所增加的节点的权值就会增加子树内需 pushdown 的节点个数乘上增加的值。 然后注意到需 pushdown 的表达状态很少,所以我们可以进行最短路。 Cod
阅读全文
摘要:link Solution 首先可以先判断同构情况。 然后考虑枚举两棵树的根,你可以枚举A的需要换的叶子当A、B根,因此你还需要枚举换到哪里,然后你就可以知道一个点该不该换,就可以知道答案。但是你还需要判断是否合法,你发现A中叶子比父亲先换,B中叶子比父亲后换,因此我们可以连边跑 topo 来验证是
阅读全文
摘要:link Description 对于一个长度为 的序列,选出一个子序列,使得相邻两项的并之和最大。 Solution 考虑到我们可以设 表示前面 个以 的最大序列价值,那么我们可以发现 是具有单调性
阅读全文
摘要:link Description 给出三角形三边长,给出绳长,问绳在三角形内能围成的最大面积。保证绳长 三角形周长。 Solution 首先我们得知道,三角形的内切圆半径就是三角形面积 除以三角形周长。 可以看出,如果绳长 三角形内切圆周长,
阅读全文