摘要: 思路 十分板,直接上线段树分裂就行了,加上一个并查集维护一下联通情况就行了。 代码 #include<bits/stdc++.h> using namespace std;typedef long long ll;const int N=1e5+10,P=1e7;char op[5]; int n, 阅读全文
posted @ 2022-07-04 22:16 A_zjzj 阅读(20) 评论(0) 推荐(0) 编辑
摘要: 思路 直接 dfs 一遍。 首先,一个子树内的点都是一遍 dfs 到的,那么直接差分一下,到达 $u$ 的时候记录当前的 $>p_u$ 的个数,然后 dfs 完 $u$ 的子树的时候,记录 $>p_u$ 的个数,相减即为 $u$ 的答案。 代码 #include<bits/stdc++.h> usi 阅读全文
posted @ 2022-07-04 20:21 A_zjzj 阅读(20) 评论(0) 推荐(0) 编辑
摘要: 思路 一道很妙的反悔贪心题。 考场上打的是 $O(n\times k)$ 的 $dp$,其中 $k$ 是 $a_i$ 的种类数。 考虑贪心,先从大到小枚举 $a_i$,把相同的 $a_i$ 一起处理。 当前可以白嫖的直接白嫖,如果不能再白嫖了,再看看如果前面白嫖了一个 $x$,当前的为 $y$。 若 阅读全文
posted @ 2022-07-04 19:34 A_zjzj 阅读(56) 评论(0) 推荐(0) 编辑
摘要: 思路 模拟赛的题,有点板。 直接建出原图的 Kruscal 重构树,然后发现询问变成了一个子树内区间第 K 大。 直接转化到序列上然后主席树即可。 代码-P4197 Peaks #include<bits/stdc++.h> using namespace std;typedef long long 阅读全文
posted @ 2022-07-04 19:24 A_zjzj 阅读(37) 评论(0) 推荐(0) 编辑
摘要: 思路 很显然直接用最小割处理这种问题(列个方程解一下,注意两点中间的边要用正权,其他的边的权值可以任意变换)。 发现现在的问题是求最大的方案,于是我们把边权取相反数,就转化为最小割问题了。 然而现在有一个问题,就是边权是负数,不能跑最小割,所以把其他的边权加上一个值变成正数,最后减掉去,就可以了。 阅读全文
posted @ 2022-07-04 19:20 A_zjzj 阅读(26) 评论(0) 推荐(0) 编辑