Codeforces Round #804 (Div. 2) Editorial reupload

Revision en7, by tibinyte, 2022-10-31 00:15:55

D — Almost Triple Deletions

Author: Gheal

Hints

Hint 1

Consider the opposite problem: What is the smallest possible length of a final array?

Hint 2

For which arrays is the smallest possible final length equal to $$$0$$$?

Hint 3

Considering the second hint, it is possible to completely remove some subsequences from the array.

Solution

Lemma: An array $$$a_1,a_2,\ldots, a_n$$$ can be fully deleted via a sequence of operations if and only if it satisfies both of the following constraints:

$$$n$$$ is even

The maximum frequency of any element in the array is at most $$$\frac n2$$$.

Proof

If $$$n$$$ is odd, then any final array will also have an odd length, which can't be $$$0$$$.

An optimal strategy is to always delete one of the most frequent elements and any one of its neighbours. If the most frequent element occurs $$$k \gt \frac n2$$$ times, then the final array will have at least $$$n-2 \cdot (n-k)=2\cdot k - n \gt 0$$$ elements. Otherwise, this strategy ensures the full deletion of the array, since, after performing an operation, it is impossible for an element to occur more than $$$\frac {n-2}{2}$$$ times in the array.

Since the maximum frequency of a value for every subsequence $$$[a_l,a_{l+1},\ldots,a_r]$$$ can be computed in $$$O(n^2)$$$, it is possible to precompute all subsequences which can be deleted via a sequence of operations.

Let $$$dp[i]$$$ be the maximum length of a final array consisting of $$$a_i$$$ and some subarray from the first $$$i-1$$$ elements. Initially, $$$dp[i]$$$ is set to $$$1$$$ if the prefix $$$[a_1,a_2,\ldots, a_{i-1}]$$$ can be fully deleted. Otherwise, $$$dp[i]=0$$$.

For every pair of indices $$$i$$$ and $$$j$$$ ($$$1 \le j \lt i \le n, a_i=a_j$$$), if we can fully delete the subsequence $$$[a_{j+1},a_{j+2},\ldots a_{i-1}]$$$, then we can append $$$a_i$$$ to any final array ending in $$$a_j$$$. Naturally, $$$dp[i]$$$ will be strictly greater than $$$dp[j]$$$. This gives us the following recurrence:

$$$dp[i]=\max_{j=1}^{i-1}(dp[j]>0 \text{ and } a_i=a_j \text{ and } [a_{j+1},a_{j+2},\ldots,a_{i-1}] \text{ is deletable}) \cdot (dp[j]+1)$$$

If we define a final array as a subarray of equal elements from the array $$$a$$$, to which $$$a_{n+1}$$$ is forcefully appended, then the final answer can be written as $$$dp[n+1]-1$$$. Note that, when computing $$$dp[n+1]$$$, $$$a_j$$$ should not be compared to $$$a_{n+1}$$$.

Total time complexity per testcase: $$$O(n^2)$$$.

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en42 English tibinyte 2022-11-06 21:29:15 0 (published)
en41 English tibinyte 2022-11-06 19:15:16 0 (saved to drafts)
en40 English Gheal 2022-10-31 22:14:25 0 (published)
en39 English Gheal 2022-10-31 22:12:04 16
en38 English Gheal 2022-10-31 22:11:13 13 Tiny change: 'er authors of round 804. We are v' -> 'er authors. We are v'
en37 English Gheal 2022-10-31 22:10:53 211
en36 English Gheal 2022-10-31 22:04:25 26
en35 English Gheal 2022-10-31 22:03:40 39
en34 English Gheal 2022-10-31 22:01:52 74
en33 English Gheal 2022-10-31 21:57:17 200
en32 English Gheal 2022-10-31 21:57:01 747
en31 English Gheal 2022-10-31 21:48:53 629
en30 English tibinyte 2022-10-31 21:41:38 7
en29 English tibinyte 2022-10-31 21:41:03 38
en28 English Gheal 2022-10-31 21:38:59 40
en27 English tibinyte 2022-10-31 21:37:09 17
en26 English Gheal 2022-10-31 21:34:15 81
en25 English Gheal 2022-10-31 21:33:19 2311
en24 English tibinyte 2022-10-31 21:33:02 34
en23 English tibinyte 2022-10-31 21:32:50 340
en22 English tibinyte 2022-10-31 21:31:52 3999
en21 English tibinyte 2022-10-31 21:29:21 303
en20 English tibinyte 2022-10-31 21:29:00 18 Tiny change: 'anks to \ncadmiumky\n ):\n\nT' -> 'anks to \n[user:cadmiumky]\n ):\n\nT'
en19 English tibinyte 2022-10-31 21:28:31 4797
en18 English Gheal 2022-10-31 21:27:42 924
en17 English Gheal 2022-10-31 21:18:46 409
en16 English Gheal 2022-10-31 21:16:45 519
en15 English Gheal 2022-10-31 21:13:59 46
en14 English Gheal 2022-10-31 21:12:58 48
en13 English Gheal 2022-10-31 21:11:37 1405
en12 English tibinyte 2022-10-31 00:18:26 7
en11 English tibinyte 2022-10-31 00:18:18 79
en10 English tibinyte 2022-10-31 00:18:10 73
en9 English tibinyte 2022-10-31 00:18:00 3259
en8 English tibinyte 2022-10-31 00:16:45 3531
en7 English tibinyte 2022-10-31 00:15:55 2754
en6 English tibinyte 2022-10-31 00:15:29 2047
en5 English tibinyte 2022-10-31 00:14:20 1085
en4 English tibinyte 2022-10-31 00:12:33 2468
en3 English tibinyte 2022-10-31 00:08:20 10
en2 English tibinyte 2022-10-31 00:07:58 2606
en1 English Gheal 2022-10-30 23:34:08 50 Initial revision (saved to drafts)