专栏文章

25.6.17 闲话:拼数怎么做?

P1012题解参与者 22已保存评论 22

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
22 条
当前快照
1 份
快照标识符
@mip2pyz3
此快照首次捕获于
2025/12/03 05:11
3 个月前
此快照最后确认于
2025/12/03 05:11
3 个月前
查看原文

邻项交换

问题:
  • 有一全序集 SS 上的全序 \prec,给定 SS 中元素组成的序列 pp
  • 定义了序列的价值 f(p)f(p),若 qqpp 交换了一对 pi+1pip_{i+1}\prec p_ipi,pi+1p_i,p_{i+1} 之后的排列,有 f(q)f(p)f(q)\le f(p)
  • 如何排列 pp 以最小化 f(p)f(p)
结论:排序 pp 使得 pipi+1p_i\prec p_{i+1},此时 f(p)f(p) 最小。
证明:如果没有完成排序,一定存在 pipi+1p_i\succ p_{i+1}。一直交换这样的对,可以得到排序后的 ppf(p)f(p) 不大于当前的 f(p)f(p)
如果是偏序,这个结论就不一定正确了。

拼数

考虑最小化,最大化是一样的。
考虑构造这么一个全序 \prec
  • 定义 ABA\prec B 当且仅当 A+B<B+AA+B<B+A,此处 ++ 为字符串拼接。
可以证明这是一个全序:
  • 定义 a,ba,b 分别为 A,BA,BΣ\lvert\Sigma\rvert 进制下的数。
  • A+B<B+AaΣB+b<bΣA+aaΣA1<bΣB1A+B<B+A\Longleftrightarrow a\cdot\lvert\Sigma\rvert^{\lvert B\rvert}+b<b\cdot\lvert\Sigma\rvert^{\lvert A\rvert}+a\Longleftrightarrow\frac{a}{\lvert\Sigma\rvert^{\lvert A\rvert}-1}<\frac{b}{\lvert\Sigma\rvert^{\lvert B\rvert}-1}
  • 因此 abbcaca\prec b\land b\prec c\Longrightarrow a\prec c
而交换相邻的 aiai+1a_i\succ a_{i+1} 不会是答案变劣,根据前面的结论,这是对的。
不能比出大小的串按编号定义顺序,这样就是全序了。

评论

22 条评论,欢迎与作者交流。

正在加载评论...