小米笔试题解 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个的情况
    }
}
全部评论
第一题为啥91啊
1 回复 分享
发布于 2024-09-05 17:32 安徽
第二题看着有点像编辑距离,但是不会写
1 回复 分享
发布于 2024-09-05 17:35 广东
有没有结构的
点赞 回复 分享
发布于 2024-09-05 16:53 上海
第一题 73 第二题看不懂直接输出 1 骗了 27
点赞 回复 分享
发布于 2024-09-05 17:03 湖北
第一题用优先级队列A了,但第二题没想到用二维背包,还是太菜了
点赞 回复 分享
发布于 2024-09-05 17:33 湖北
第二题我贪了40分钟你告诉我是dp😭😭😭
点赞 回复 分享
发布于 2024-09-05 17:36 江苏
第一题A,第二题动态规划方程写不出来,尝试删每一个数后再加,取最小值,过了55😂
点赞 回复 分享
发布于 2024-09-05 17:37 天津
请问第二题的动态转移方程大概是什么样子的呀
点赞 回复 分享
发布于 2024-09-05 17:37 上海
int tmp=(j-mem[i]+X)%X; mem[i] 是啥意思没看懂
点赞 回复 分享
发布于 2024-09-05 22:33 广东

相关推荐

bLanK的小号:建议自己写一个比较新颖的项目,比如思维导图,在线文档,仿造postman,仿造一个组件库
点赞 评论 收藏
分享
黑皮白袜臭脚体育生:简历统一按使用了什么技术实现了什么功能解决了什么问题或提升了什么性能指标来写会更好
点赞 评论 收藏
分享
评论
6
5
分享

创作者周榜

更多
牛客网
牛客企业服务