
获得徽章 0
- #刷题交流# 第十七天 饭馆菜品选择问题
最开始的思路,使用DP来做,因为题目的要求是最小价格,且只有m个菜有蘑菇,所以我认为可以找到满足菜的数量,然后在标记是否符合蘑菇数。这样一来,菜的数量一般都会满足,就需要判断蘑菇m是否满足就可以。
答案的做法是用贪心的策略,局部最优,保证全局可能最优,思路逻辑确实比dp好理解一些,,并且代码量少一些。
但是感觉这道题,用dp的逻辑也没啥问题,也是最小价格,在判断是否满足判断条件,可能是代码逻辑判断有些问题吧展开赞过评论1 - #刷题交流# 第十六天 字符串修改最少次数计算
这道题的要求很简单,就是两个相邻的两个数字是否相同,相同就将temp++
不需要修改原字符串,但有一个坑:不需要修改,但需要将相同的地方,在逻辑上算为算除重复的,然后在从下一个开始匹配。展开评论点赞 - #刷题交流# 第十五天 小U和字符R的喜好
1、初始化变量:cnt_R 用于记录当前位置之前 'R' 的数量。 ans 用于累计最终的权值之和。
2、遍历字符串 :对于每个字符 ch,如果 ch 是 'R',则 cnt_R 增加。如果 ch 是 'B',则计算当前位置对权值的贡献:计算所有可能的字符串组合中,当前位置为 'R' 的情况数,即 2n−i−1。计算所有可能的字符串组合中,当前位置为 'B' 的情况数,即 2n−i−2。计算当前位置为 'B' 时,后续位置的权值贡献。
3、累加权值:将当前位置的权值贡献累加到 ans 中。
4、取模运算:最终结果对 109+7 取模。
这道题有dp的思想,做起来比以前应手一些展开评论点赞 - #刷题交流# 第十四天 国际象棋跳跃问题
这到题开始分析感觉和斐波那契和lk上的一道循环转圈的集合起来的原理类似,唯一不同的就是这是个无限大的平面。
但是代码表示以及跳跃判定还是逻辑有一些问题,判断条件对端点的情况有些不对。
而且豆包的答案有错误,不能通过测试。赞过评论1 - #刷题交流# 第十三天 字符串解压缩
题目要求:
对一个压缩的字符串进行解压缩,其中每个字母后面可能跟随一个数字,表示该字母在解压后的字符串中需要重复的次数。如果字母后面没有数字,则该字母只出现一次。
类似问题总结思路:
字符串处理:遍历、字符判断(字母、数字)、字符串拼接等。
循环控制:通过循环控制指针的移动,逐个处理字符串中的字符。
数字解析:在处理字符串中的数字时,需要将字符转换为整数,并考虑多位数字的情况。展开赞过评论1 - #刷题交流# 第十二天 小s的子序列平均数之和
题目要求计算所有子序列的平均数之和对 109+7 取模的值。首先,我们需要理解子序列的平均数之和的计算方法。对于一个数组 arr,其所有子序列的平均数之和可以分解为每个元素对所有子序列平均数的贡献。具体来说,每个元素 arr[i] 在所有子序列中出现的次数与其在子序列中的平均数贡献有关。通过组合数学的方法,我们可以计算出每个元素在所有子序列中出现的总次数,从而得到所有子序列的平均数之和。
知识扩展——豆包总结,仔细想一想解题过程确实有用到组合数学的解法
组合数学:本题涉及组合数学中的子集计数问题,通过计算每个元素在所有子序列中出现的次数来求解平均数之和。
模运算:在处理大数问题时,模运算是一个重要的技巧,可以避免数值溢出。
快速幂算法:在计算 2n 时,使用快速幂算法可以在 O(logn) 的时间复杂度内完成计算。展开赞过评论2 - #刷题交流# 第十一天 小C的好数
位运算确实判断时间上快些,但一个没注意容易溢出,有点麻烦
位运算是一种高效的运算方式,适合用于枚举所有可能的排列方式。
在本题中,使用位运算 s >> i 和 & 1 来确定当前位置的数字是 d[0] 还是 d[1]。展开评论点赞 - #刷题交流# 第十天 小S的黑白迷宫
从迷宫的左上角 (1,1) 到达右下角 (n,m),并且希望在移动过程中经过的黑色格子(表示为1)尽可能少。将这个问题转化为一个最短路径问题,其中路径的权重是经过的黑色格子的数量。为了找到最少经过的黑色格子数量,我们可以使用广度优先搜索(BFS)算法,因为它能够保证在无权图中找到最短路径。用ai将抽象问题总结一下,确实不错
展开评论点赞 - #刷题交流# 第九天 93.英雄升级与奖励最大化
想要获得对应的奖励,小W需要将英雄的初始能力值升级到 b[i],并且所有英雄的初始能力值都为 1,所以我们可以先对每个目标能力值 b_i预处理出对应所需的升级次数,用数组 d表示, d[i]表示想达到目标值 i所需的升级次数
在处理出 d数组后,我们将问题转化为了:有 n 个英雄,最多通过k 次升级操作来提升英雄的能力值,然后每个英雄需要 d[b[i]]次操作,才能获得对应的奖励 c[i]。
又是一个经典的01背包问题,还是没有写出来展开赞过评论1 - #刷题交流# 第八天 小M的数组变换
有了题解确实不错,代码很简洁,思路很明确
搞懂了代码里:
为什么使用 i * i <= x?
在提取素因子时,我们只需要遍历到 sqrt(x) 而不是 x 本身。这是因为:
素因子分解的性质:如果 x 可以被某个数 i 整除,那么 i 和 x/i 都是 x 的因子。
对称性:如果 i 是 x 的因子,那么 x/i 也是 x 的因子。因此,我们只需要检查到 sqrt(x) 即可覆盖所有可能的因子。
但后遍没有想明白,明天抽空找一个好一点的测试用例,手动模拟一下展开评论点赞