Codeforces Round #675 (Div. 2)

Posted on 2022-04-07 19:10  Capterlliar  阅读(13)  评论(0编辑  收藏  举报

A. Fence

题意:给出三条边a,b,c,求一个整数d,使得这四条边能组成一个四边形。

解:三边之和大于第四边。输出abc中最大的就可以。

B. Nice Matrix

题意:给出一个矩阵,每次可以将一个数加一或减一,求至少几步后所有的行和列都是回文。

解:所有的行和列都是回文,要求对应的四个数相同。当四个数相同时,其等于它们的中位数步数最少,扩展到n个数也一样。当行和列出现奇数时,中间一行就遍历不到,但它也应当是回文。考虑遍历整个矩阵,加一个vis数组,每次把没有标记过的数拎出来,算一下步数,这样就全覆盖到了。

C. Bargain

题意:给出一串数,每次从中删除一个连续的不为空的子串,求其所有结果在十进制下之和模1e9+7。

解:按位拆分算贡献。对于每一位数,删除它左边的数时对它作的贡献没有影响,删除其右边的数时删几位它的贡献少10的几次方。具体来说,在长为n-i的子串中删连续k个字符有n-i-k+1种选法,每种选法乘上对应0的长度,累加起来即可。

D. Returning Home

题意:有一个n*n的矩阵,每个格子可以花费1到达上下左右的格子。标记出m个格子,处于同行或同列的标记点之间可以0花费转移过去。给出起点和终点,求最短路。

解:显然建图后跑最短路。考虑建图。首先起点和终点之间各向标记点连边,标记点之间连完全图会T。从一个标记点到另一个标记点之间有两种方式,要么跑到同一行过去,要么跑到同一列过去。按两种方式从小到大连边,加上首尾,一共4e5条,可以接受。

E. Minlexes

题意:给出一个小写字母的字符串,两个相邻相同字母可以删去,求其每一个后缀进行若干次删除操作后字典序最小的结果。

解:没写,口胡一下。似乎是dp。当两字母相同时,只有两种选择,删或不删。如果删了后面的字母更小,那就删;如果后面字母字典序大,那就不删。如果后面字母与当前相同,那就看下一位。例如cccb,b字典序比c小,删除更优;二cccd时不删更优。输出看起来很麻烦,观察别人代码是维护了一个结构体,记录前5个字符,后两个字符,和当前第一位与第二位的字典序比较。