Warning: session_start(): open(/tmp/sess_4dfe60117dcf8a40f42c97d013610c9c, 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: 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:acm_life_from_zero:7.25-7.31 [CVBB ACM Team]

用户工具

站点工具


2020-2021:teams:acm_life_from_zero:7.25-7.31

2020/07/25-2020/07/31周报

团队训练

李元恺

题目

比赛

M-SOLUTIONS Programming Contest 2020(atcoder) pros:5/6/6 rk:249

姜维翰

专题

比赛

题目

袁熙

专题

没有专题

比赛

没有比赛

题目

本周推荐

李元恺

Codeforces Round 659 1C

标签:图论、状压dp

题意:两个字符串S、T,字符集大小20,每次可以从S中选任意多个相同字符,将他们变成另一个字符,问最小多少次可以将S变成T。

思路:将每个字符作为一个点,如果存在字符$s_i = a$ 且$t_i = b$ 建立一条a→b的有向边,计这个图为$G_1$。

1、观察可以发现,如果一个弱联通图的最优解不是链状(若所有操作都满足上一次操作选择的边的终点等于下一次操作的起点,则是链状),则一定存在一个操作数相同的链状方案。

 证明:显然每个点都至少要被一条边覆盖,如果不是链状,则一定有两条边指向相同点,此时可以把先操作的边的目标改为后操作的边的起点,重复这样调整,最终会得到一个操作数相同的链状解。

2、现在我们可以用一个序列{$a_n$}来表示答案,$a_1,a_2,\ldots,a_n$表示依次执行$a_1$→$a_2$,$a_2$→$a_3$,…,$a_{n-1}$→$a_n$,

序列合法 iff 任意$G_1$中的边u→v,存在i,j满足$i<j$且$a_i = u,a_j = v$

3、对于$G_1$的弱联通块$G$,计其无环导出子图中点数最多的为S,计|S|=k,|G|=n,则答案大于等于$2n-k-1$。证明:设有一个解的大小为k,考虑向一个空图中依次加入k条边。

 1)若某次操作的两个端点处于同一个联通块中,则对于任意无环导出子图(DAG),其大小最多减1,连通块数不变
 
 2)若不处于同一连通块中,则连通块数-1,所有DAG体积不变。

初始状态下有n个连通块,所以最多k-n+1条边被用来减小DAG的体积,最开始我们有一个大小为n的DAG,所以最终最大的DAG体积至少是2*n-k-1。

4、存在一个使答案等于2n-k-1的方案,给出构造:设G(V,E)最大DAG导出子图=S($V_1$,$E_1$),令序列为$V \setminus V_1$,$V_1$,$V \setminus V_1$

comment:这周做的最有意思的题,推荐给大家

袁熙

姜维翰

2020-2021/teams/acm_life_from_zero/7.25-7.31.1596173897.txt.gz · 最后更改: 2020/07/31 13:38 由 lak