• 省选模拟104 题解


    A. 签到题

    把每个点向它右侧比他大的第一个点之间连边,如果没有那么向 (root) 连边。

    那么可以构成一棵树。

    特判一些情况之后,可以认为问题就是:

    1.给某节点和它的所有儿子节点权值加上一个值。

    2.询问一条路径的权值和。

    首先考虑如果只询问单点的维护方法,其实就是打一个标记表示给整个儿子集合都加上了若干权值。

    每次只要统计单点的修改加上父亲标记即可。

    所以把这个式子拆开,分别用线段树树剖维护就好了。

    B. 蓝超巨星

    对于左移的问题,可以枚举 (S) 这个串与 (T) 匹配的起始位置。

    然后通过哈希判断字符相等的集合是否相等,哈希的方式自然还是 (sum limits_{i=1}^n (i-lst_{s_i})*p^i)

    在哈希判断成立的条件下,只需要判断 (26) 个字符是否对位相等。

    预处理出每个置换环的大小,每个字符置换到另一个字符需要用的最短时间。

    然后发现对于每个字符,都要满足一个同余方程,其中模数不大于 (26)

    对于左移的限制,还要满足一个同余方程,模数为 (n)

    对于同余方程的合并,有一个简单的 (O(min{模数})) 的做法,不断给一个变量加上较大的那个模数即可。

    所以这题就可以 (O(n26^2)) 的做完了,如果对于每个环都只做一遍合并,复杂度可以做到 (O(n26))

    C. 秘密行动

    容易发现每个质因子是独立的。

    所以对于每个点的每个质因子可以看做选或不选两种事件。

    二者分别有一个代价,二者不能共存。

    对于 (m) 条边,其实就对应着恰好一个选。

    这个问题可以用最小割解决,然后我刚开始的建图是这样的:

    把每个点的每个质因子拆成两个点,分别表示选和不选,中间连上 (infty) 边。

    对于 (m) 条边,将 (a) 选向 (b) 不选连边,(b) 选向 (a) 不选连边。

    然而这个做法是伪掉的,因为存在情况同时割掉了某个点选和不选两条边。

    所以题解的建图是这样的:把这两个点合并成一个点,然后直接把边连起来。

  • 相关阅读:
    PHP chop() 函数
    PHP bin2hex() 函数
    多个表关联或者有视图套视图,快速检查SQL语句中所有的表统计信息是否过期
    洛谷P3628 [APIO2010]特别行动队 斜率优化
    洛谷P3195 [HNOI2008]玩具装箱TOY 斜率优化
    bzoj4282 慎二的随机数列 树状数组求LIS + 构造
    校园网 入读统计 + 性质分析
    HAOI2006 受欢迎的牛 缩点
    普通平衡树 Treap
    洛谷P1563 玩具谜题 简单模拟
  • 原文地址:https://www.cnblogs.com/skyh/p/12944727.html
Copyright © 2020-2023  润新知