欢迎光临散文网 会员登陆 & 注册

复盘|第289场周赛

2022-11-19 20:30 作者:UCLmsc  | 我要投稿

计算字符串的数字和

【模拟】用tmp维护每轮操作结果,遍历字符串s,每k个字符为一组,计算该组的数字和sm,并转换为字符串添加至tmp尾部,最终将s更新为tmp所表示的字符串,模拟操作直到s的长度≤k,返回ans=s。

完成所有任务需要的最少轮数

【贪心 + 哈希表】只有1个的数字取不了,尽可能多拿3,如果模3余1,那少拿一个3拿两个2,次数 = x // 3 + 1,模3余1,多拿一个二,也是 x // 3 + 1,可以写成(x + 2)// 3。

转角路径的乘积中最多能有几个尾随零

【维护各方向的前缀和】尾0的个数 = min(路径上数的因子2的个数和,因子5的个数和)。那么数越多越好,路径起点终点都应该在边界上,预处理每一行的因子前缀和,枚举所有路径,从上往下走,枚举左转右转;从下往上走,枚举左转右转。ans = 所有路径上的Min(s2,s5)。代码中,c2、c5是预处理递推算出每个数的因子 2 的个数和因子 5 的个数,两层for循环计算 grid 每行因子 2 和 5 的前缀和,先从上往下,枚举左拐还是右拐,再从下往上,枚举左拐还是右拐。

相邻字符不同的最长路径

【DFS】若无相邻节点限制,本题求的就是树直径上点的个数,用树形dp求直径,枚举子树x的所有子树y,维护从x出发的最长路径maxLen,更新答案为从y出发的最长路径加上maxLen + 1,合并从x出发的两条路径,递归结束返回maxLen。要求相邻,所以转移时限制s[y] == s[x]才能转移,求点的个数就是最长路径的长度 + 1.


复盘|第289场周赛的评论 (共 条)

分享到微博请遵守国家法律