• 2022省选后日常集训


    5.14省选组 总结(AHOI2022)

    T1

    题目所说的过程就是把两个环合起来。
    那么把大小相同的环扔到一起算,那不同的环个数就只有 \(O(\sqrt n)\) 个,直接枚举合并哪两个环就行,复杂度是 \(O(n)\) 的。
    维护 lcm 就是维护每个质数的最高指数,由于需要删去某个环的贡献,记录一下指数的次大值即可。

    T2

    钥匙的个数只有 \(5\) 个非常关键,利用这个性质可以建虚树做,还没仔细研究。

    T3

    乍一看以为跟前两周的 AGC 很像,后来发现完全不一样(

    T4

    啊啊啊啊啊啊啊啊啊暴力分有60pts呜呜呜呜呜呜
    特性B也搞定的话就能72了……

    6.6省选组 总结

    T1

    套了个博弈壳子而已,就是求 \(1\) ~ \(n\) 内质因数为 \(i=1\) ~ \(30\) 的数有多少个。

    直接Min25筛。

    T2

    十万的数据范围,根号算法直接考虑莫队,发现直接莫队的复杂度是不平均的,那么平衡一下复杂度,也即按 \(\sqrt{\sum \frac n i}\) 分块,此时每个块的大小不一样,但是每个块内的操作复杂度是平衡的。

    T3

    每层设生成函数,显然有 \(F_R(x)=\frac{1}{1-A_R(x)F_{R+1}(x)}\) ,直接维护很慢,而且无法优化,但是可以将 \(F_R(x)\) 写成 \(\frac {B_R(x)}{C_R(x)}\) 的形式,每次转移都是一个简单的线性变换,分治维护矩阵乘法(类似于分治FFT)。

    6.7省选组 总结

    T1

    \(a | b\)\(a \oplus b\) 都用 \(a \& b\)\(a+b\) 表示,然后用 FWT ,\(a+b\) 的部分放在系数里, \(a \& b\) 的部分放在指数上。

    T2

    \(v_i\) 为点 \(i\) 连出的所有边的异或和。
    根据这是一棵树(不存在环)可以知道最终目的是使 \(v_i\) 全部变为 \(0\)
    每次操作可以将其中两个(即路径的两个端点)同时异或 \(k\)

    易证几个结论:

    1. 每个操作至少会删去一个点,合法且不劣。
    2. 有两个相同的点一定用一次操作删去。

    值域只有 \(15\) 那么就能直接状压了。

    T3

    直接维护 mex 不好做,考虑维护其补集。

    非常套路地使用线段树维护,每个节点都维护一个完整的补集显然是不行的,时间直接爆掉。
    那么尝试让补集分散到每个点中,使同一个元素不在有祖先关系的点中出现,这样最大的集合个数就是 \(O(n \log n)\) 的。

    维护的话类似标记永久化,每次经过该点时要将此处集合的最小值计入贡献,但是每次在一个集合中删数后要往两个儿子 push ,用维护区间的形式显然是好做一些的。

    为了保证时间复杂度额外维护一下当前点没有但后代有的值,用 map 就好。

  • 相关阅读:
    PHP base_convert() 函数详解
    PHP中位运算符
    MySQL中SQL Mode的查看与设置
    HTML 字符实体详情
    php7中 ?? 和 ?: 的区别
    正则表达式详解
    PHP sprintf() 函数详解
    php-config——PHP配置信息的查看
    无界工作记录
    CMake根据平台移植检查设置文件编译选项
  • 原文地址:https://www.cnblogs.com/Kelvin2005/p/16354400.html
Copyright © 2020-2023  润新知