QOJ.ac

QOJ

Type: Editorial

Status: Open

Posted by: GotoHiotori

Posted at: 2026-06-16 10:03:46

Last updated: 2026-06-16 14:07:50

Back to Problem

没有人喜欢我呜呜呜

感觉是很神秘的题,我让 AI 生成了一个部分分表结果把我做局了,直到 ke 说到他写的序列 dp 我才做明白了(sb AI 做的部分分提示我去考虑树结构 dp,无敌了)。

其实你应当观察到这样一件事,你的操作关于时间不对称,倒过来操作不是形如操作小的变大这样的事情,因此你要意识到最终局面的序列和初始的序列是不同强度的。

玩一下初始序列发现只能找到交换的点连边会形成连通块,但是看起来没什么用,因为你更关心匹配点对有什么性质然而在这里可以交叉可以包含可以相离……

那你就去考虑下最终局面,我们称两个账号贴贴过当且仅当它们完成过至少一次换位,那你发现贴贴的对数至多为 $\mathcal{O}(m)$,没有贴贴的对的判定条件只是在前面的点没有被操作过,而贴贴过的两个账号在某个时刻相邻过,而且你不会操作更靠前的那个,所以它们在最终序列上之间相隔的只能是想要去贴贴但是没贴贴到的败犬,所以你直接 dp 记 $f_{i,j}$ 表示后缀 $[i,2n]$ 上有 $j$ 个还没匹配的点,然后你转移时就只有 $3$ 种情况:

  1. $i$ 也和 $[1,i)$ 匹配
  2. $i$ 和 $(i,2n]$ 某个匹配,这里要求 $i$ 没有往前走过
  3. $i$ 和某个 $k\in (i,2n]$ 贴贴过,且它们俩关系合法,而且 $(i,k)$ 上全都是操作过的点(作为败犬所以也都不能贴贴过),从 $f_{k+1,j-(k-i-1)}$ 转移过来。

第三种分析过只有 $\mathcal{O}(m)$ 对 $(i,k)$,然后你检验关系合法是 $\mathcal{O}(m)$ 的,综上所述,时间复杂度 $\mathcal{O}(m(n+m))$。

Comments

avatar
KnownError_
我喜欢你