这里会显示出您选择的修订版和当前版本之间的差别。
后一修订版 | 前一修订版 | ||
2020-2021:teams:manespace:cf_658_div.2 [2020/07/31 13:18] quantumbolt 创建 |
2020-2021:teams:manespace:cf_658_div.2 [2020/08/07 12:54] (当前版本) quantumbolt |
||
---|---|---|---|
行 1: | 行 1: | ||
- | 没写完呢,写完就传。 | + | Codeforces round 658 Div.2 |
+ | |||
+ | 链接:https://codeforces.com/contest/1381 | ||
+ | |||
+ | 本来是上周就应该写完的,拖了好久,这周上传。 | ||
+ | |||
+ | ====== A Common Subsequence ====== | ||
+ | |||
+ | ===== 题意: ===== | ||
+ | |||
+ | 大水题,求两个序列$a,b$的最短的公共子序列。 | ||
+ | |||
+ | ===== 题解: ===== | ||
+ | |||
+ | 最短那就是一个字母,直接枚举就行。除非两个序列的全部元素都不同,那么不存在,直接输出''%%No%%''。 | ||
+ | |||
+ | ====== B Sequential Nim ====== | ||
+ | |||
+ | ===== 题意: ===== | ||
+ | |||
+ | 给出每组有$a[i]$个石头的$N$个石头堆,从第一堆开始往后面取,如果不能取到石头,就判为输。 | ||
+ | |||
+ | ===== 题解: ===== | ||
+ | |||
+ | 感觉是个博弈论的问题,但简单分析一下可以知道如果$a_1 > 1$,那么先手必赢。但如果前缀中有奇数个 1,那么后手必赢。 但需要注意的是特判所有堆都只有一个石头子的情况,此时只需要判断$n$的奇偶性就行。 | ||
+ | |||
+ | ====== C1 Prefix Flip (Easy Version) ====== | ||
+ | |||
+ | ===== 题意: ===== | ||
+ | |||
+ | 有$a,b$两个01的串,现需要你执行如下操作,将$a$变成$b$.选定$a$的前缀反转0和1,然后把这个前缀倒过来 | ||
+ | |||
+ | ===== 题解: ===== | ||
+ | |||
+ | 简单版本就直接暴力了,每次用$a$字符串的第一个字符和$b$字符串的最后一个字符进行判断。如果不相等。则翻转整个$a$字符串。然后两个字符串长度减一。如果相等的话,就先对$a$的第一个字符进行反转操作。然后再反转整个$a$。 | ||
+ | |||
+ | ====== C2 Prefix Flip (Hard Version) ====== | ||
+ | |||
+ | ===== 题意: ===== | ||
+ | |||
+ | 同C1 | ||
+ | |||
+ | ===== 题解: ===== | ||
+ | |||
+ | 题目说操作的步数不能超过$2n$步。而且hard version的数据也更强,n的范围也变了,所以暴力是不行的了。 现在我们先用$n$个操作将$a$串变成同一个字符,再去跟$b$串每个位置作比较 从后往前保证修改过的值不被影响。 每次修改后记录当前位置往前的串的样子,重复上述操作。直至满足题意。 | ||
+ | |||
+ | ====== D Unmerge ====== | ||
+ | |||
+ | ===== 题意: ===== | ||
+ | |||
+ | 给出一个长度为$2n$的序列,问这个序列是否可以由两个长度为$n$的序列$a$和$b$按特定的规则归并而成。 | ||
+ | |||
+ | ===== 题解: ===== | ||
+ | |||
+ | 现对长度为$2n$的序列分组,再01背包判断选出几组刚好能构成长度为$n$的数组 | ||
+ | |||
+ | ====== E Mastermind ====== | ||
+ | |||
+ | ===== 题意: ===== | ||
+ | |||
+ | 对两个长度为$n$的数组,数组中的元素有$x$个是相同的,有$y$个是不同的,但是可以通过换序使其相同。现在给出其中一个数组,$x,y$。问是否存在另一个数组满足题意。 | ||
+ | |||
+ | ===== 题解: ===== | ||
+ | |||
+ | 暂时咕一下,感觉还是有些难度的。过段时间来补 |