摘要: 又一次错过了单杀 *2500 的机会,不知道该说什么了。。 先把 $a$ 排序,不会影响答案。 考虑枚举答案 $v$,计算有多少种选择子序列的方法使得答案为 $v$。 这不太好做,考虑放宽限制,计算有多少种选择子序列的方法使得答案不小于 $v$,最后把方案数加起来就好了。 设 $f_{i,j}$ 表 阅读全文
posted @ 2022-10-16 16:29 Kobe303 阅读(23) 评论(0) 推荐(0) 编辑
摘要: 首先和 F1 一样,操作 $2,3$ 依旧没有意义。 但是 F1 中至多使用一次操作 $4$ 的结论到这里不成立了。 但是依旧可以发现一些有用的性质。 对于操作 $4$,会有 $4$ 个格子的 $a$ 发生改变,且这 $4$ 个格子形如 $(x,y),(n,y),(x,m),(n,m)$。记这样的操 阅读全文
posted @ 2022-10-16 14:56 Kobe303 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 首先操作是可逆的,因此问题可以转化成给定一个局面,要将这个局面全部变为白色格子所花费的最小代价。 关键性质:只有操作 $1$ 和操作 $4$ 是有用的。 证明: 对于操作 $2$,翻转一个以 $(n,1)$ 为左下角,$(x,y)$ 为右上角的矩阵,可以转化为使用两次操作 $1$,第一次翻转以 $( 阅读全文
posted @ 2022-10-16 14:23 Kobe303 阅读(12) 评论(0) 推荐(0) 编辑
摘要: 和 CF1188D 是差不多的。 设 $f_{i,j}$ 表示前 $i-1$ 位,有 $j$ 个数对第 $i$ 位进了位时的最大答案。 进位的一定是后 $i-1$ 位最大的一些数,直接利用上一次的排序结果再在前面添加一个数进行对一段后缀排序。 转移就枚举 $A$ 当前这一位填什么。 具体细节看代码( 阅读全文
posted @ 2022-10-16 13:34 Kobe303 阅读(23) 评论(0) 推荐(0) 编辑
摘要: 首先有一个比较明显的性质,直径最多经过两条边。 设全局最小值为 $m$。考虑从任意一点出发,经过全局最小值所在的点,然后再到任意点,花费是 $2\times m$ 的。而任意边权 $\geq m$,走两条后的权值必定 $\geq 2\times m$。所以最多就是花费 $2\times m$ 走两条 阅读全文
posted @ 2022-10-16 10:30 Kobe303 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 首先先将所有元素离散化。 设 $m=\sum k_i$,因为 $n,m$ 同阶,所以下文均用 $n$ 来表示。 考虑根号分治。 对于元素个数超过 $\sqrt n$ 的序列,不难发现这样的序列至多只有 $\sqrt n$ 个。对于每个序列,把它的元素存进桶中,然后枚举其它所有的序列来判断。这部分时间 阅读全文
posted @ 2022-10-16 08:43 Kobe303 阅读(15) 评论(0) 推荐(0) 编辑
摘要: *1900 不会做了。。 考虑将所有数从小到大排序后顺次插入,用并查集维护。 需要维护以下几个东西:区间的总数量,最长区间的长度,最长区间的个数。 当最长区间的个数等于区间的总数量时,更新答案。 具体细节看代码。 Code: #include <bits/stdc++.h> using namesp 阅读全文
posted @ 2022-10-16 06:44 Kobe303 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 这咋想到网络流的啊。。 由最大值最小想到二分最大值,将求解转化为判定。 然后假设当前 check 的值为 $x$,从源点向每个点连一条容量为 $x$ 的边,表示这个点至多送出 $x$ 个礼物。 然后把每个关系也看成一个点,假设当前是第 $i$ 条关系 $(a_i,b_i)$,那么 $a_i$ 和 $ 阅读全文
posted @ 2022-10-15 20:03 Kobe303 阅读(20) 评论(0) 推荐(0) 编辑
摘要: 考虑建出原树的点 Kruskal 重构树,也就是每次取出连通块的最值作为根,然后删去根裂成若干个连通块,递归构造这些连通块,最后在新图中将这些连通块的根与整个连通块的根连边。 容易发现,这样建出的新树满足 $a,b$ 在原树上的链上最值等于新树上的 $\text{lca}(a,b)$。 于是建出最小 阅读全文
posted @ 2022-10-15 15:42 Kobe303 阅读(30) 评论(0) 推荐(0) 编辑
摘要: 用 map 暴力维护每段,如果不小于前一段就把这段直接删了,否则往后暴力删段直到某段小于这一段。每次输出 map 的大小即可。 因为总共至多新建 $n+m$ 个段,所以均摊复杂度 $\mathcal O(\log n)$。 具体细节看代码。 Code: #include <bits/stdc++.h 阅读全文
posted @ 2022-10-14 16:09 Kobe303 阅读(16) 评论(0) 推荐(0) 编辑