- 博客(7)
- 收藏
- 关注
原创 贪心算法。
循环遍历整个数组,从第一个开始,每一个都能有各自的最远到达范围。那我们就需要按照val也就是价值排序,从大到小,然后每一个游戏都有截止时段,从截止时段的最后一位开始往前方,也是贪心的思想。思路就是先按起点排序再按终点排序,从第一段开始检索,再向后遍历,选择起点在第一段范围内的终点在最右侧的段,选中这一段再加入结果数组。因为无论怎么合并,合并的总次数不变,因此,只要保证每次选择的都是最小的两个堆,就能保证总和最小。举个例子,比如2 3 1 1 4,最小跳数应该是2,具体方式是从第一个跳到第二个,再跳到结尾。
2025-06-18 14:27:51
352
1
原创 动态规划问题
长度为1的钢条的最大价值是dp[1],长度为2的是dp[2],可以由两根长度为1的钢条拼接得到也可以直接用一根长度为2的。最后,如果我们需要计算不重叠的前后两部分的最大和(比如前i个和后n-i个),可以遍历所有可能的i,分别计算前i个的最大子数组和和后n-i个的最大子数组和,然后取它们的最大值之和。状态转移的含义是:如果选择草药i会导致超时,那就继承上一个状态dp[i-1][j],也就是考虑到第i-1株草药时,时间为j时的最优解。先明确dp数组的含义,dp[i][j]表示前i种草药在时间j内的最大价值。
2025-06-15 20:09:50
747
原创 概率算法(NEW)
轮到第二张牌的时候,同样从B中按顺序拿第二张,然后在A中随机挑一个位置放,此时有两个位置,因此概率1/2。与此同时,剩下的牌不被替换的概率就是1-1/2。正常快排的思路就是选择一个枢轴,然后在这个枢轴的左右两边使用双指针,一旦次序不对,就交换。公式的含义是,牌在第j次迭代的时候被替换掉开始,后续所有都不被替换的概率恰好是1/n。具体思想在代码里了,是针对单个赌徒的。以此类推,第n张牌的概率就是1/n,剩下的牌不被替换的概率同样是1-1/n。算法的目的是在不修改原数组的情况下,生成一个完全随机的新数组。
2025-06-10 00:06:05
892
原创 2024杭电多校第九场-1006-融合矿石
需要注意的是,题目的边界(如50%应该算在更低的一边,举个栗子也就是说我的及格线虽然划到60,但你60分依然算不及格,你需要比60分高一点才能让你及格~),做个判断即可。对于一般的完全背包问题,我们考虑的一般是:取到第 i 件物品时,物品总重量不超过 w 时,所能获得的最大价值。接着我们考虑一下,我们已经拿到了目前能拿到的最大质量的金辉石,那对于已经获得的这些矿石,我们是否要融合呢?还是以样例为例,决定我们是否融合的因素在于,融合后的总价值是否比原先高了,高就融合,不高就保留。我们先大致理解题目的意思。
2024-08-17 02:00:17
1894
7
原创 2024杭电多校第三场-1001
f [ 3 ] :根据情况1,f [ 3 ] + = f [ 3 - 1 ] ,根据情况2,f [ 3 ] + = 1,而对于情况 3,没法分出来,因为是奇数 , +=0;f [ 4 ] 根据情况 1 ,f [ 4 ] + = f [ 3 ] ,根据情况 2,f [ 4 ] + = 1,根据情况 3,分成2*2。f [ 2 ] :根据情况1, f [ 2 ] + = 1,根据情况 2,f [ 2 ] += 1 , 所以f [ 2 ] = 2;的树,假如有两组这样的树,就能得到总节点为 4 的一片森林。
2024-07-27 19:05:14
2113
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅