• 题解 ABC210F


    ABC210F - Coprime Solitaire

    原题链接

    看到这种两面性问题,显然想到 2-SAT。

    给每个质数设置一个集合。((2 imes 10^6) 之内的质数有 (148933) 个)

    先把每一个数字都质因数分解,如果某个数有质因数 (x_1,x_2...) ,就把这个数的位置、是正反面,加入 (x_1,x_2) 对应的集合中。

    这样一个集合中的数都不能同时共存,两两连边 ( eg X or eg Y)(即若 (X)( eg Y))。

    但是这样每个集合要连 (O(n^2)) 条边,显然爆炸,于是我们想到前后缀优化连边。

    对于每个集合,我们令 (P_i) 为前缀的 "( eg)" 连边和,(Q_i) 为后缀的 ''( eg)'' 连边和。

    则对于此集合的第 (i) 位,连边 (i o P_{i-1},i o Q_{i+1})

    这样每个集合只用连 (O(n)) 条边了。

    总时间复杂度 (O(nlog L))(L=max(A_i,B_i))

  • 相关阅读:
    应届毕业生简历撰写技巧
    【LeetCode】- Longest Substring Without Repeating Characters
    线性规划
    什么是凸规划
    最优化算法 (一)
    香农定理和频谱效率
    虚函数的用法
    QT学习一
    努力!
    Qslider
  • 原文地址:https://www.cnblogs.com/BlankAo/p/15025842.html
Copyright © 2020-2023  润新知