Gravatar
LikableP
积分:1891
提交:416 / 1100

Pro4275  [THUPC 2025 pre] 峰回路转

官方题解。来源:清华大学学生算法协会仓库

给定三种记号:

  • $s_i\text{#}s_{i+1}$ 表示读完 $s_i$ 后应紧跟 $s_{i+1}$,且优先级高于其它两种符号;
  • $s_i\text{*}s_{i+1}$ 表示读完 $s_{i+1}$ 后再读 $s_i$;
  • $s_i\text{p-q}$ 表示(在不考虑的情况下)(如果有则)先读对应的 $\text{p-(q-1)}$ 前的文字,读完 $s_i$,再读对应的 $\text{p-(q+1)}$ 前的文字。

给出一个排列 $p_i$,求一组记号使得阅读 $p_i$ 的顺序恰好将其还原为 $1 \sim K$ 的排列。

$1 \le K \le 10^6$


先考虑只有最复杂的 $\text{p-q}$ 时应该怎么处理。

可以想到用栈来保存当前的遥远跳转结构,如果碰到可以直接阅读的则将栈清空。

如果有多个遥远跳转结构怎么办?栈套栈!每弹出一个栈,更新新栈顶的栈的嵌套层数。

在此基础上可以实现另外两种符号,其中 $\text{*}$(及其连续段)需要根据头尾情况简单分类讨论一下。想清楚了实现起来并不复杂。

复杂度 $O(K)$


2026-01-30 20:21:08    
我有话要说
Gravatar
LikableP
积分:1891
提交:416 / 1100

$$ a^b \equiv \begin{cases} a^{b \;\bmod\; \varphi(m)} & \gcd(a, m) = 1 \\ a^b & \gcd(a, m) \neq 1 \land b < \varphi(m) \\ a^{b \;\bmod\; \varphi(m) + \varphi(m)} & \gcd(a, m) \neq 1 \land b \ge \varphi(m) \end{cases} \pmod m $$


















2026-03-04 22:57:38