Loading

3.13 CW 模拟赛 T4. 依然

前言

这个结果是可做题, 赛时没猜出来, e
本质上还是 \(\rm{T1}\) 性质猜错了导致的, 都怪 \(\rm{T1}\)

  • 先从已经确定的部分开始考虑
    • 拆分序列法
      • 一般从可以严格分成两部分来考虑
        • 拆分点可以确定状态
        • 分开的子问题尽量少
      • 分成两个同性质的串加上一个构造 \((\)例如 \((X)Y\) 用于构造新的合法括号串\()\)
      • 分成两个同性质的串, 递归分治

思路

传统开猜
对于 \(A_i\) , 与其相关的 \(B\) 部分为 \(i, \left\lfloor \dfrac{i}{2} \right\rfloor\)
这个形式其实见过, 就在几天前的 \(\rm{CF}\), 也就是对于 \(2k, 2k + 1\) , 对应的都是一个东西

但是放到这个题中好像没什么用
先套进去找性质

\[ \begin{align*} &\sum_{i = 2}^{n} A_i \times \Big(B_i \otimes B_{\left\lfloor \large\frac{n}{2} \right\rfloor}\Big)\\ \end{align*} \]

可以拆分成

\[ \begin{align*} &\sum_{k = 1}^{\large\frac{n}{2}} A_{2k} \times \Big(B_{2k} \otimes B_{k}\Big) + A_{2k + 1} \times \Big(B_{2k + 1} \otimes B_{k}\Big)\\ \end{align*} \]

观察到一个性质, 对于 \(B_1\) , 其只与 下标 \(2, 3\) 有关, 如果我们确定了 \(B_1\) , 那么剩下两部分毫不相干
考虑一直分治下去, 每次枚举 \(B_1\) 取值, 然后枚举两端 \(1\) 的个数, 传下去做

似乎你也可以找其他的 \(B\) 进行分治, 但是发现因为其他部分都和 \(A\) 相关, 不好处理, 而分治前提就是拆分点可以确定状态和分开的子问题尽量少

当然这里有一种更易于理解的方法, \(k, 2k, 2k + 1\) 组成了一颗二叉树形式, 在上面处理即可

分析一下分治的复杂度
每一个位置都要枚举 \(\mathcal{O} (n^2)\) , 一共 \(n\) 个位置, 总共 \(\mathcal{O} (n^3)\)

逐层合并最优解总比一次全部枚举最优解好上不少

总结

  • \(\left\lfloor \dfrac{i}{2} \right\rfloor\) 的性质
    • 对于 \(2k, 2k + 1\) , 对应的都是一个东西

数据比较小的

  • 计数型问题
  • 最优型问题

也许可以考虑拆分序列法

  • 求系数数组使得对于一个序列其权值最值化
    • 观察对于原序列中一个位置对应哪些系数
      • 固定常数个系数
        往往找到其树形结构方便拆分
posted @ 2025-03-14 08:26  Yorg  阅读(8)  评论(0)    收藏  举报