Warning: session_start(): open(/tmp/sess_9cda6a1ce794fc798bba155d06c52ef9, O_RDWR) failed: No space left on device (28) in /data/wiki/inc/init.php on line 239

Warning: session_start(): Failed to read session data: files (path: ) in /data/wiki/inc/init.php on line 239

Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/inc/auth.php on line 430

Warning: mkdir(): No space left on device in /data/wiki/lib/plugins/dw2pdf/vendor/mpdf/mpdf/src/Cache.php on line 19
Temporary files directory "/data/wiki/data/tmp/dwpdf/972/" is not writable

Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/inc/actions.php on line 38

Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/lib/tpl/dokuwiki/main.php on line 12
2020-2021:teams:legal_string:jxm2001:contest:cf_699_div._2 [CVBB ACM Team]

用户工具

站点工具


2020-2021:teams:legal_string:jxm2001:contest:cf_699_div._2

这是本文档旧的修订版!


Codeforces Round #699 (Div. 2)

E. Sorting Books

题意

给定一个长度为 $n$ 的序列 $\{a\}$,每次操作可以任取一个位置并将该位置的数移到序列末尾。

问最少需要多少次操作才能使序列中所有大小相同的数相邻。

题解

显然只需要在序列中选定一些位置,然后按特定顺序将他们移除就可以完成任务。定义 $\text{dp}(i)$ 表示不移动序列 $[i,n]$ 的位置的个数。

维护每个值 $v$ 的最靠左出现的位置 $l_v$,最靠右出现的位置 $r_v$,动态维护 $[i,n]$ 中出现的次数 $c_v$。

于是如果选择保留位置 $i$,若 $i=l_{a_i}$,则需要移除 $[i,r_{a_i}]$ 中所有不等于 $a_i$ 的位置,即 $\text{dp}(i)=r_{a_i}-l_{a_i}+1-c_{a_i}+\text{dp}(r_{a_i}+1)$。

若 $i\neq l_{a_i}$,则需要移除 $[i,n]$ 中所有不等于 $a_i$ 的位置,

F. AB Tree

题意

题解

查看代码

查看代码

 
2020-2021/teams/legal_string/jxm2001/contest/cf_699_div._2.1612706925.txt.gz · 最后更改: 2021/02/07 22:08 由 jxm2001