【考试总结】2022-07-23
fft
先考察 的取值。结论是将 分成 和 两个部分。这是出于要尽量减少 的情况,严谨证明需要归纳
那么可以直接得到 的基于二进制拆分的表达式,对于每个 需要考虑其被消去后的贡献以及消去时 的代价,注意最后一个 做 上来就是 那么多出来的贡献需要最后减掉
使用 std::set
来维护全 连续段,处理进位退位本质上都是翻转线段,每个线段的贡献是等差或者二阶等差数列乘等比数列求和,做和式变换可以得到前缀和的简单形式。
sort
当数组中只有 时可以通过状压 来计算,即设 表示处于状态 的概率。转移乍一看需要 ,但是可以逐位计算,枚举当前交换的位并直接继承上一位转移后的结果。
回到本题,使用 的技巧,枚举 中的每个权值,将 之的元素置 否则置零记作状态,对 个状态一起做上面的状压
需要做 次,时间复杂度
sssp
设 表示从 的路径上经过 条边的第 小路径,使用类似 的思想转移使得每条路径都在路径上最大标号处被合并一次得到。
考察第 维发现转移是矩阵乘法形式,而对于第一维可以倍增,此时加速矩阵乘法时的信息处理即可
将被乘矩阵转置,此时对于矩阵乘法结果 而言只需要合并左矩阵第 行和右矩阵第 行上的信息,实际含义就是这两行上的 个元素作为转移点。
合并时现将 线性建堆(笛卡尔树),之后进行 次取出小根堆对顶作为答案,取出的本质上时四元组 (长度,中转点,左路径排名,右路径排名),每次都将最后一维加一入堆(在最后一维 时),最后一维是 时将第三维加一入堆。
询问显然要向量乘矩阵。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律