UER #1

UOJ12 【UER#1】猜数

给出 \(g,l\),满足存在 \(n\) 使得 \(n ^ 2 = gl\),求 \(a, b\) 满足 \(g | a, g|b, ab = gl\) 的所有 \(a, b\)\(a +b\) 的最小和最大值。

\(g, l \le 10^{18}\)


  数学

  随便推,最小值为 \(2g\sqrt{\frac{l}{g}}\),最大值为 \(l + g\)

UOJ13 【UER#1】跳蚤OS

  模拟题,搞个并查集即可。

UOJ14 【UER#1】DZY Loves Graph

DZY开始有 \(n\) 个点,现在他对这 \(n\) 个点进行了 \(m\) 次操作,对于第 \(i\) 个操作(从 \(1\) 开始编号)有可能的三种情况:

  1. Add a b: 表示在 \(a\)\(b\) 之间连了一条长度为 \(i\) 的边(注意,\(i\)是操作编号)。保证 \(1 \leq a, b \leq n\)
  2. Delete k: 表示删除了当前图中边权最大的k条边。保证 \(k\) 一定不会比当前图中边的条数多。
  3. Return: 表示撤销第 \(i-1\) 次操作。保证第 \(1\) 次操作不是 Return 且第 \(i-1\) 次不是 Return 操作。

请你在每次操作后告诉DZY当前图的最小生成树边权和。如果最小生成树不存在则输出 \(0\)

\(n \le 3\times 10^5, m \le 3\times 10^5\)


  并查集

  感觉最近想题目越来越在往套路上扯……

  撤销、加边、回退,这不就是可持久化并查集板子吗?!好了,我 AK 了!

  然后一写(代码),发现空间寄了,因为空间只有 \(\tt 64MB\),于是直接没了……成了 \(60\) 分,听官方题解说有 \(80\sim 100\) 分,但是为什么我常数那么大呢???


  考虑比较正经的写法,只有 Add 和 Delete 操作是比较好处理的,直接可撤销并查集,如果有了 Return 操作,但是我们可以发现,Return 的次数最多一次!于是对于 Add 的复杂度这样是不会退化的,但我们可以直接每次 Delete 全部边,然后再 Return,于是可撤销并查集会寄,也只有这里会寄,于是可以讨论一下:

  • Delete 后面并非 Return,直接暴力撤销。
  • Delete 后面是 Return,我们可以通过前面记录以下当前有最大的 \(k\) 条边的答案即可快速回答。

  然后就没了,对于这题,只能说 wssb。

  代码

  

posted @ 2022-05-11 14:56  Werner_Yin  阅读(91)  评论(1编辑  收藏  举报