https://codeforces.ml/gym/306855 ←链接

正常,正常……

A.大意是,给一个数,每次操作会使这个数加一,如果得到的结果有后导0,会将所有后导0删除得到最终结果.例如,对1099,加上1得1100,去掉两个后导0,得f(1099) = 11.现在问对一个给定的数n进行无限次这样的操作,最多可以得到几个不同的结果(包括n本身). 一个水题,对于除了第一位的每一位数α,总是可以通过得到9 – α个不同的数,例如1010,可以得到1011~1019 9个数,之后对于倒数第二位,可以得到102~109 八个数,等等. 至于第一位,无论如何总是9个数(只剩下一位时,不管怎么加,总是能得到123456789这些个位数),最后在加上n本身就得到结果了.

B.给定一个大数(最大二十万位),所有位不为0. 现在给一个1~9九个数的映射,让1~9的数都映射于另一个非0个位数.操作:选定大数的一个连续子段,将这些字段的所有数做这个映射变换,问一次操作可能得到的最大数时多少?仍然是水题. 因为只要高位的数映射值可以大于原数值,就算只改动它一个,也比把后面全改为9999999…都要好(何况后面并不能改成999…),所以我们只需要从最高位开始找到第一个f(x) > x的位就可以了.之后再看后面与它连续的是否仍然符合f(x) >= x(注意一定是≥不是>,懂我意思吧),逐个改变之后符合的,遇到不符合的停下,得到这个改动后的最大数.

C1&C2,一个贪心问题,也并不复杂. 将结果存入字符串,给两个索引i = 0、j = len – 1,两边夹即可. 懒得打字了啊反正也没人看,如果真的有人看而且对题目感兴趣的话可以自己试试,这题还是挺有意思的. 另外,就是C2这题我在封榜后1分钟交对的……有个if真的是多虑了,没有考虑清楚.

总结的话,就是题目越简单写的话越多……(与昨天形成鲜明对比)

(后来转移博客时发现,当时对封榜的概念理解不对乱用了,实际上是比赛结束QAQ)