模拟RD265 ABC三题,Rank58
Codeforces 464 A
题意:给定一个字符串,求比这个字符串字典序大并且和它长度相等的第一个不含有长度大于等于2的回文串的字符串。
思路:首先我们枚举最后一个与原串相等的位置,从后往前枚举,因为我们需要的是第一个字典序大于给定串的。
然后就枚举我们将下一个字符改变成了什么,再按照这种方法继续填充完整答案串即可。
Codeforces 464 B
题意:给8个\((x,y,z)\)三元组,但是每个三元组的内部顺序可能是错乱的,问是否有可能把这些三元组们调整顺序之后变成一个立方体的8个顶点。
思路:首先枚举每个三元组的顺序,然后判断这个是否是一个立方体:我们对于每一个顶点向另外7个顶点连边,如果这是一个立方体,那么得到的会是这些东西:
- 三个棱长
- 三个\(\sqrt{2}\)棱长
- 一个\(\sqrt3\)棱长
然后对于所有的都是这样就说明这是一个立方体。(其实我并不会证明
Codeforces 464 C
题意:给一个数字串,然后给n个询问:每个询问是\(d_i\rightarrow t_i\),其中\(d_i\)是一个数字,\(t_i\)是一个数字串。代表的是将原串中所有的\(d_i\)都改变成\(t_i\)。问经过这些操作后原串表示的数字\(mod\ 10^9+7\)是多少。
思路:考虑dp。首先我们考虑i..n这些操作都处理完了之后会把c数字改变成什么,就记为\(b[i][c]\)。
然后就会发现我们在转移的时候需要变成\(b[i][c]*10^{b[i+1][t[j]]的长度}+b[i+1][t[j]]\)。
所以还要记录\(10^{b[i][c]的长度}\),记为\(a[i][c]\)。
然后转移的时候就很好做了。