
获得徽章 0
#刷题交流# 第二十五天 最大异或和计算
在数组 a 或 b 中删除一个元素后,使得剩余元素的总和与另一个数组的总和的异或结果最大。
解题思路:因为是只删除一个,a或b中的一个,暴力破解即可。
通过遍历数组 a 和 b,分别计算删除每个元素后的总和,并与另一个数组的总和进行异或操作,最终找到最大的异或和。
有贪心的思想。
在数组 a 或 b 中删除一个元素后,使得剩余元素的总和与另一个数组的总和的异或结果最大。
解题思路:因为是只删除一个,a或b中的一个,暴力破解即可。
通过遍历数组 a 和 b,分别计算删除每个元素后的总和,并与另一个数组的总和进行异或操作,最终找到最大的异或和。
有贪心的思想。
![[愉快]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_21.c408154.png)
展开
评论
点赞
#刷题交流# 第二十四天 破冰行动
题目大概的意思就是通过破坏企鹅所在冰块两侧的冰块,使企鹅掉落到河中,并计算所需的最小总力量。
企鹅所在的冰块编号为K(用-1表示),且不能破坏企鹅所在的冰块。我们需要找到企鹅所在冰块两侧的最小强度值,并将它们相加得到最小总力量。
这道题就是主要的贪心思想就可以,只需要把周围的两块最小需要力的进行计算就可以。
定位企鹅所在冰块:首先通过遍历数组A,找到值为-1的元素,其索引即为企鹅所在冰块的位置p。
分割数组:将数组A分割为两部分,左侧部分为A[:p],右侧部分为A[p+1:]。
计算最小强度:分别计算左侧部分和右侧部分的最小值,即min(A[:p])和min(A[p+1:])。
求和:将两侧的最小值相加,得到使企鹅掉落所需的最小总力量。
题目大概的意思就是通过破坏企鹅所在冰块两侧的冰块,使企鹅掉落到河中,并计算所需的最小总力量。
企鹅所在的冰块编号为K(用-1表示),且不能破坏企鹅所在的冰块。我们需要找到企鹅所在冰块两侧的最小强度值,并将它们相加得到最小总力量。
这道题就是主要的贪心思想就可以,只需要把周围的两块最小需要力的进行计算就可以。
定位企鹅所在冰块:首先通过遍历数组A,找到值为-1的元素,其索引即为企鹅所在冰块的位置p。
分割数组:将数组A分割为两部分,左侧部分为A[:p],右侧部分为A[p+1:]。
计算最小强度:分别计算左侧部分和右侧部分的最小值,即min(A[:p])和min(A[p+1:])。
求和:将两侧的最小值相加,得到使企鹅掉落所需的最小总力量。
![[不失礼貌的微笑]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_16.9d17f6d.png)
展开
评论
点赞
#刷题交流# 第二十三天 小U的加法魔法
我们需要找到所有满足倍数关系的子集。可以利用动态规划的思想,从大到小遍历每个元素,计算以该元素为最小值的子集数量。
解题步骤:
1.初始化计数数组、计算幂次数组
2.构建动态规划数组
3.从大到小遍历元素、计算子集数量、最后累加结果
这道题有来自数论和组合数学的逻辑抽象。
我们需要找到所有满足倍数关系的子集。可以利用动态规划的思想,从大到小遍历每个元素,计算以该元素为最小值的子集数量。
解题步骤:
1.初始化计数数组、计算幂次数组
2.构建动态规划数组
3.从大到小遍历元素、计算子集数量、最后累加结果
这道题有来自数论和组合数学的逻辑抽象。
![[愉快]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_21.c408154.png)
展开
评论
点赞
#刷题交流# 第二十二天 小C的最短服务时间优先磁盘调度算法
正在学操作系统,用c++程序模拟了操作系统中磁盘模块对于调度的算法。
这道题是最短时间调度算法。可以先排个序,然后在计算,
题目要求:
模拟最短服务时间优先(SSTF)磁盘调度算法,计算磁头在处理所有请求时总共移动的磁道数。核心信息是每次磁头服务完一个请求后,选择当前距离最近的未处理请求。如果有多个距离相等的请求,优先选择磁道号较小的那个。磁头会在没有请求时停止,直到新的请求到达。
知识扩展——AI
磁盘调度算法:SSTF(Shortest Seek Time First)是一种常见的磁盘调度算法,旨在减少磁头移动的距离,从而提高磁盘访问效率。
这道题确实是贪心的做法,先把小的搞定,形成局部用时最短,尽可能保证整体最短
优先队列:优先队列是一种数据结构,能够在 O(logn) 时间内插入和删除元素,并支持快速获取最小或最大元素。在本题中,等待队列的排序操作可以看作是优先队列的应用。
优先队列的方式确实没想起来,想的还是用哈希存储
正在学操作系统,用c++程序模拟了操作系统中磁盘模块对于调度的算法。
这道题是最短时间调度算法。可以先排个序,然后在计算,
题目要求:
模拟最短服务时间优先(SSTF)磁盘调度算法,计算磁头在处理所有请求时总共移动的磁道数。核心信息是每次磁头服务完一个请求后,选择当前距离最近的未处理请求。如果有多个距离相等的请求,优先选择磁道号较小的那个。磁头会在没有请求时停止,直到新的请求到达。
知识扩展——AI
磁盘调度算法:SSTF(Shortest Seek Time First)是一种常见的磁盘调度算法,旨在减少磁头移动的距离,从而提高磁盘访问效率。
这道题确实是贪心的做法,先把小的搞定,形成局部用时最短,尽可能保证整体最短
优先队列:优先队列是一种数据结构,能够在 O(logn) 时间内插入和删除元素,并支持快速获取最小或最大元素。在本题中,等待队列的排序操作可以看作是优先队列的应用。
优先队列的方式确实没想起来,想的还是用哈希存储
![[不失礼貌的微笑]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_16.9d17f6d.png)
展开
评论
1
#刷题交流# 第二十一天 优秀项目组初选评比
这题在最开始,用java没通过,最后用c++提交的,现在通过答案转化,能通过了但自己的代码在最后还是出问题,感觉是判断条件的区间问题,有人java的代码跟答案不一样![[流泪]](//lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_6.dde0d83.png)
附上思路:
设定一个分数线 x,使得得分大于 x 的项目组数量和得分小于等于 x 的项目组数量都在给定的区间 [m,n] 之间。
排序,遍历,判断条件。
这题在最开始,用java没通过,最后用c++提交的,现在通过答案转化,能通过了但自己的代码在最后还是出问题,感觉是判断条件的区间问题,有人java的代码跟答案不一样
![[流泪]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_6.dde0d83.png)
附上思路:
设定一个分数线 x,使得得分大于 x 的项目组数量和得分小于等于 x 的项目组数量都在给定的区间 [m,n] 之间。
排序,遍历,判断条件。
![[不失礼貌的微笑]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_16.9d17f6d.png)
展开
评论
点赞
#刷题交流# 第二十天 小E的比赛得分计算
题目要求计算小E在n场比赛中的总得分。每场比赛的得分规则是:赢得一场比赛得1分,如果连续赢得比赛,从第二场开始每场额外得1分。我们可以通过遍历比赛结果数组,维护一个计数器来记录当前连续赢得比赛的次数,并根据这个计数器来计算总得分。
遍历比赛结果数组:
如果当前比赛结果为1(即赢得比赛),则根据当前连续赢得比赛的次数f来计算得分,并更新f。
如果当前比赛结果为0(即输掉比赛),则重置f为0。
计算得分:
每赢得一场比赛,得分增加f + 1,其中f是当前连续赢得比赛的次数。
如果连续赢得比赛,f会递增,从而在下一场比赛中得分会增加。
返回总得分:
遍历结束后,ans即为总得分。
知识点回顾:
数组操作:通过遍历数组来处理每个元素,是解决数组问题的基本操作。
动态规划思想:虽然本题没有显式使用动态规划,但通过维护一个计数器f来记录状态变化,体现了动态规划的思想。
计数问题:通过计数器来记录连续赢得比赛的次数,并根据计数器来计算得分,是解决计数问题的常见方法。
题目要求计算小E在n场比赛中的总得分。每场比赛的得分规则是:赢得一场比赛得1分,如果连续赢得比赛,从第二场开始每场额外得1分。我们可以通过遍历比赛结果数组,维护一个计数器来记录当前连续赢得比赛的次数,并根据这个计数器来计算总得分。
遍历比赛结果数组:
如果当前比赛结果为1(即赢得比赛),则根据当前连续赢得比赛的次数f来计算得分,并更新f。
如果当前比赛结果为0(即输掉比赛),则重置f为0。
计算得分:
每赢得一场比赛,得分增加f + 1,其中f是当前连续赢得比赛的次数。
如果连续赢得比赛,f会递增,从而在下一场比赛中得分会增加。
返回总得分:
遍历结束后,ans即为总得分。
知识点回顾:
数组操作:通过遍历数组来处理每个元素,是解决数组问题的基本操作。
动态规划思想:虽然本题没有显式使用动态规划,但通过维护一个计数器f来记录状态变化,体现了动态规划的思想。
计数问题:通过计数器来记录连续赢得比赛的次数,并根据计数器来计算得分,是解决计数问题的常见方法。
![[不失礼貌的微笑]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_16.9d17f6d.png)
展开
评论
点赞
#刷题交流# 第十九天 小X走字符串
题目要求判断小R能否从字符串的第一个字符走到最后一个字符,并且在过程中保持体力值不小于0。字符的体力消耗或恢复取决于相邻字符的ASCII码差值。我们可以通过遍历字符串,计算每一步的体力变化,并判断是否在任何一步体力值降到0以下。
这道题,主要利用ASIC码进行变换![[愉快]](//lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_21.c408154.png)
字符串处理:通过 ord() 函数获取字符的ASCII码值,并进行差值计算。
模拟算法:通过模拟每一步的体力变化,判断是否能够完成整个字符串的遍历。
题目要求判断小R能否从字符串的第一个字符走到最后一个字符,并且在过程中保持体力值不小于0。字符的体力消耗或恢复取决于相邻字符的ASCII码差值。我们可以通过遍历字符串,计算每一步的体力变化,并判断是否在任何一步体力值降到0以下。
这道题,主要利用ASIC码进行变换
![[愉快]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_21.c408154.png)
字符串处理:通过 ord() 函数获取字符的ASCII码值,并进行差值计算。
模拟算法:通过模拟每一步的体力变化,判断是否能够完成整个字符串的遍历。
展开
评论
点赞
#刷题交流# 第十八天 策略大师:猜字谜
题目要求计算小I在数字1到n中猜中幸运数字的概率,假设小I和对手小W都采取最优策略。我们可以通过动态规划来解决这个问题。定义一个数组f,其中f[i]表示在数字1到i中,小I获胜的概率。我们需要逐步计算出f[n],即在数字1到n中,小I获胜的概率。
动态规划:
动态规划是一种通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。在这道题中,我们通过定义状态f[i]来表示小I在数字1到i中获胜的概率,并通过状态转移方程逐步求解。
概率论:
概率论是研究随机现象数量规律的数学分支。在这道题中,我们需要计算小I在不同情况下的获胜概率,并利用这些概率来更新状态。
AI确实是个好帮手
题目要求计算小I在数字1到n中猜中幸运数字的概率,假设小I和对手小W都采取最优策略。我们可以通过动态规划来解决这个问题。定义一个数组f,其中f[i]表示在数字1到i中,小I获胜的概率。我们需要逐步计算出f[n],即在数字1到n中,小I获胜的概率。
动态规划:
动态规划是一种通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。在这道题中,我们通过定义状态f[i]来表示小I在数字1到i中获胜的概率,并通过状态转移方程逐步求解。
概率论:
概率论是研究随机现象数量规律的数学分支。在这道题中,我们需要计算小I在不同情况下的获胜概率,并利用这些概率来更新状态。
AI确实是个好帮手
![[不失礼貌的微笑]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_16.9d17f6d.png)
展开
评论
点赞
赞了这篇文章
#刷题交流# 第十七天 饭馆菜品选择问题
最开始的思路,使用DP来做,因为题目的要求是最小价格,且只有m个菜有蘑菇,所以我认为可以找到满足菜的数量,然后在标记是否符合蘑菇数。这样一来,菜的数量一般都会满足,就需要判断蘑菇m是否满足就可以。
答案的做法是用贪心的策略,局部最优,保证全局可能最优,思路逻辑确实比dp好理解一些,,并且代码量少一些。
但是感觉这道题,用dp的逻辑也没啥问题,也是最小价格,在判断是否满足判断条件,可能是代码逻辑判断有些问题吧
最开始的思路,使用DP来做,因为题目的要求是最小价格,且只有m个菜有蘑菇,所以我认为可以找到满足菜的数量,然后在标记是否符合蘑菇数。这样一来,菜的数量一般都会满足,就需要判断蘑菇m是否满足就可以。
答案的做法是用贪心的策略,局部最优,保证全局可能最优,思路逻辑确实比dp好理解一些,,并且代码量少一些。
但是感觉这道题,用dp的逻辑也没啥问题,也是最小价格,在判断是否满足判断条件,可能是代码逻辑判断有些问题吧
![[流泪]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_6.dde0d83.png)
展开
评论
1
赞了这篇文章
赞了这篇沸点
赞了这篇沸点
赞了这篇文章
#刷题交流# 第十六天 字符串修改最少次数计算
这道题的要求很简单,就是两个相邻的两个数字是否相同,相同就将temp++
不需要修改原字符串,但有一个坑:不需要修改,但需要将相同的地方,在逻辑上算为算除重复的,然后在从下一个开始匹配。
这道题的要求很简单,就是两个相邻的两个数字是否相同,相同就将temp++
不需要修改原字符串,但有一个坑:不需要修改,但需要将相同的地方,在逻辑上算为算除重复的,然后在从下一个开始匹配。
![[不失礼貌的微笑]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_16.9d17f6d.png)
展开
评论
点赞
#刷题交流# 第十五天 小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的思想,做起来比以前应手一些
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的思想,做起来比以前应手一些
![[愉快]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_21.c408154.png)
展开
评论
点赞