小米笔试题解 9.5
第一题:分情况讨论,如何一台机器做两个面包,遍历ai和bi之和得到答案,如果是两台机器做,通过set来维护所有的bi,遍历机器,遍历到第u台机器就把bi从set里面扔掉,然后取set中的最小值和ai相加即可。
第二题:背包问题,首先把所有输入都余上X做预处理,同时输入过程中维护一个总和,这个总和取余之后可得最坏解法。二维dp,第一维i的意思是考虑前i个输入,第二维j的意思为在考虑前i个输入的情况下组合出j需要的最小代价,按状态转移即可。拿到最终的dp数组后,固定一维为n,遍历二维看看和X差多少对答案取其中最小即可。
补充转移方程
for(int i=1;i {
for(int j=0;j {
dp[i][j]=min(dp[i][j],dp[i-1][j]+1)//对应删除第i的情况
int tmp=(j-mem[i]+X)%X;
dp[i][j]=min(dp[i][j],dp[i-1][tmp])//对应采用第i个的情况
}
}
第二题:背包问题,首先把所有输入都余上X做预处理,同时输入过程中维护一个总和,这个总和取余之后可得最坏解法。二维dp,第一维i的意思是考虑前i个输入,第二维j的意思为在考虑前i个输入的情况下组合出j需要的最小代价,按状态转移即可。拿到最终的dp数组后,固定一维为n,遍历二维看看和X差多少对答案取其中最小即可。
补充转移方程
for(int i=1;i
for(int j=0;j
dp[i][j]=min(dp[i][j],dp[i-1][j]+1)//对应删除第i的情况
int tmp=(j-mem[i]+X)%X;
dp[i][j]=min(dp[i][j],dp[i-1][tmp])//对应采用第i个的情况
}
}
全部评论
第一题为啥91啊
第二题看着有点像编辑距离,但是不会写![](https://uploadfiles.nowcoder.com/images/20220815/318889480_1660553763930/8B36D115CE5468E380708713273FEF43)
有没有结构的
第一题 73 第二题看不懂直接输出 1 骗了 27![](https://uploadfiles.nowcoder.com/images/20220815/318889480_1660553763890/5072FC474BC4CF9234FABC22E54A999A)
第一题用优先级队列A了,但第二题没想到用二维背包,还是太菜了
第二题我贪了40分钟你告诉我是dp😭😭😭
第一题A,第二题动态规划方程写不出来,尝试删每一个数后再加,取最小值,过了55😂
请问第二题的动态转移方程大概是什么样子的呀
int tmp=(j-mem[i]+X)%X;
mem[i] 是啥意思没看懂
相关推荐
01-14 20:42
南昌航空大学科技学院 前端工程师 点赞 评论 收藏
分享
01-12 20:24
门头沟学院 后端 点赞 评论 收藏
分享
![](https://static.nowcoder.com/fe/file/oss/1715049343797JOCFB.png)
点赞 评论 收藏
分享