随机化过题记录

开这个坑是因为今天(2022.1.8)考场上随机化过题,毕竟考场上打随机化和描述随机化算法是一个比较有趣的事情,于是开了个坑,不定期更新。

  • 2022.1.8 :"ARC080F Prime Flip"[1]

  1. ARC080F Prime Flip

    有无限枚硬币,其中有 \(N\) 枚硬币 \(x_{1\ldots N}\) 初始时正面朝上,其余均为背面朝上,每次可以选择一段区间 \([l,r]\),将区间内所有硬币翻转,其中 \(r-l+1\) 为一个奇数质数;问最少多少次能将所有硬币全部翻为背面朝上。

    \(N \le 100,x_i \le 10^7\)


    网络流 筛法

    校内模拟赛搬的题目,当时出成了 \(N \le 5000\)\(x_i\) 随机。

    首先将问题转化为差分形式,我们最后就是将所有数两两匹配,然后匹配的边权就是至少用多少个奇质数表示(和、差的形式)出这两个点的差值。

    然后注意到边权为:

    • 当两个点差值为奇质数的时候,就是 \(1\)
    • 如果为差值偶数,就是 \(2\)(这个可以直接打表证明)
    • 差值为奇合数,那么就是 \(3\)

    这个时候我们发现,应该尽量选择 \(1, 2\) 长度的边,于是将所有数直接奇偶分组,然后就是二分图的最大匹配问题了!

    但是我太懒了,在想到奇偶分组就直接想到了随机化,然后就是讲所有数 shuffle 一下,进行贪心的随机匹配,再加个卡时函数,发现正确率高的惊人!

    然后就过了。

    还有更加离谱的,这个还能过 ATC 的数据,随机过 ATC 3000*

    然后成为了最裂解

    image ↩︎

posted @ 2022-01-08 15:04  Werner_Yin  阅读(55)  评论(2编辑  收藏  举报