CF818G Four Melodies

题目描述

作者注:我想有些人可能还记得 Eductational Codeforces Round 22 的“两首旋律”这个题目。现在,是时候让它变得更加困难了! Alice 是一名作曲家,最近她录制的两首曲子非常受欢迎。现在她有很多粉丝都在期待她的新作品。 这一次,Alice 想要为她的新曲子组成四首旋律。 Alice 手上有一张写有 $n$ 个音符的乐谱。她想要选出四个非空且互不相交的子序列,使得每个子序列都构成一个旋律,并且四个子序列长度的总和最大。 子序列是指从一个序列中删除若干元素(可以为零),但不改变剩下元素顺序后得到的序列。 当一个子序列中任意两个相邻的音符要么相差 $1$,要么其值对 $7$ 同余时,该子序列被认为组成了一首旋律。 你需要编写程序,计算最多可以获得的四个非空且互不相交的旋律总长度。

输入格式

第一行包含一个整数 $n$($4\leq n\leq 3000$)。 第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1\leq a_i\leq 10^5$),表示乐谱上的音符。

输出格式

输出最大的四个非空且互不相交且每个都可以组成旋律的子序列长度的总和。

说明/提示

在第一个样例中,可以通过选择任意 $4$ 个音符来组成 $4$ 首旋律(每个旋律只包含一个音符)。 在第二个样例中,可以组成一首包含 $2$ 个音符的旋律——$\{1,2\}$。其余音符分别用于其他三个旋律(每个只包含一个音符)。 由 ChatGPT 5 翻译