CF612(EDU4) 题解

· · 题解

依然没有计算几何题。

A. The Text Splitting:

考察:字符串,模拟。
题目简述:
给你一个长度为 n 的字符串 s 以及两个正整数 p,q,现在让你把 s 分割成若干个子串,使他们的长度为 p 或 q。
最后以原来顺序输出子串个数及子串自身,多解任意输出,无解输出 -1。
数据范围:

  1. 由 f_{i-1} 转移到 dp_i:
    这个很简单,在预处理时将所有 a_i 离散化,将相同的 a_i 封装到一个名叫 idx_{a_i} 的 vector 里,然后枚举 idx_{i-1} 和 idx_i 中的数,直接转移即可。
  2. 由 dp_i 转移到 f_i:
    很显然,在 a_x=a_y 的情况下从 x 绕整个圆一圈回到 x 旁边的 y 是最优的,那么直接枚举 x 以及 y 是在 x 的顺时针还是逆时针方向即可。

这样就可以求出最小代价,方案在 dp 过程中记录即可。
时间复杂度为 \Theta(n^2),空间复杂度为 \Theta(n)。