• 2022/2/17 思考。


    其实是 Solution Set.

    「GXOI / GZOI2019」旅行者

    显然考虑超源超汇一类东西。要找到一些染色方法使得所有 \(\forall (u,v),u \neq v,c_u = 1,c_v = 0\) 都被包含。

    这个可以说是典中典,枚举二进制下每一位是 \(1\) 还是 \(0\),第一次是 \(1\) 的位置的点连源点,第二次连汇点,跑 \(O(2\log k)\) 次 Dijkstra。

    那么时间复杂度是 \(O(T n \log m \log k)\) 的。

    「SDOI2019」热闹的聚会与尴尬的聚会

    好长的名字。

    我们钦定这个出题人不会造数据。我们先随便搞出一个比较优秀的尴尬的聚会,求出一个热闹的聚会的 \(p\) 的下界。

    我们先假设选出所有点,如果还不满足就删去度数最小的点。在单求热闹的聚会的 \(p\) 最大值这样做可以 \(O(n \log n)\)……但是没必要,毕竟你已经钦定这个数据很水了。事实上确实是那个确实。

    「LOJ 508」失控的未来交通工具

    由裴蜀定理可知,有 \(a_1,a_2,\cdots ,a_k\),对每个 \(a_i\) 赋上一个系数 \(b_i \in \Z\)\(\sum a_ib_i\),那么仅能构出为 \(\gcd(a_1,a_2,\cdots a_k)\) 的倍数的数。

    注意要动态加边,同时要动态找环一堆东西。不妨先对每个连通块钦定一个根构成一个树,不难发现是并查集维护。那么要在并查集维护当前结点到树根的距离(这个需要在路径压缩的时候顺便处理掉才能保证复杂度),并且根据裴蜀定理我们可以对每一个连通块维护一个 \(C\) 表示可以构出所有以 \(C\) 为倍数的权值。

    好那么分讨,先考虑加边。首先一个边可以看成一个环,那么 \(C \gets \gcd(C,2w\bmod m)\)

    然后如果连的边在同一个连通块,那么构成了一个新的环长度为 \((d_u+d_v+w) \bmod m\)。跟上面一样的处理方法。

    否则的话要合并两个所属连通块,就假设把 \(u\) 并到 \(v\) 上面去吧。首先距离要更新,因为我们用了并查集所以只需要改连通块 \(u\) 的根的距离,\(C\) 的话显然 \(C_{V} \gets \gcd(C_{U},C_{V})\)

    然后考虑查询。如果无法到达输出 \(0\),如果 \(b\)\(0\) 特判一下。然后剩下的工作非常的傻逼做个 exgcd 啥事儿没有。

  • 相关阅读:
    java反射机制
    jdbc连接mysql时发出警告:WARN: Establishing SSL connection without server's identity verification is not recommended...
    java,jdbc操作数据库
    vue.js 第十课-第十六课
    vue.js 第九课
    vue.js 第八课
    如何扒代码。。。
    vue.js第七课
    工作总结
    滤镜 filter:gray 变灰色
  • 原文地址:https://www.cnblogs.com/amagaisite/p/15906681.html
Copyright © 2020-2023  润新知