9.5 小米笔试
鼠鼠因为简历被疯狂挂,导致很久没写笔试了
今天有幸写了小米的笔试题:
第一题是做面包的最小代价题,直接模拟一遍就行,要用multiset维护一个有序集合,或者用堆也可以
第二题也是个最小代价问题,两种操作,一个是给一个数自增1,一个是移除一个数,最后让数组和被x整除。最优解肯定是要考虑两种操作的组合,所以要穷举所有可能出现的情况,而删除i和删除i+x最后+1的操作数都是一样的,所以对元素取模,只需要考虑删除[1,x-1]这个区间的和就可以了,这时候就可以把问题转化为和为i的最小元素数,用dp就行。
求出dp数组后再依次考虑每个代价i,看删除了和为i的几个元素后,还需要做几次加1的操作,最后取最优解即可。
在更新ans的时候忘记考虑s - i后刚好是x的倍数的情况了,卡了二十分钟
今天有幸写了小米的笔试题:
第一题是做面包的最小代价题,直接模拟一遍就行,要用multiset维护一个有序集合,或者用堆也可以
第二题也是个最小代价问题,两种操作,一个是给一个数自增1,一个是移除一个数,最后让数组和被x整除。最优解肯定是要考虑两种操作的组合,所以要穷举所有可能出现的情况,而删除i和删除i+x最后+1的操作数都是一样的,所以对元素取模,只需要考虑删除[1,x-1]这个区间的和就可以了,这时候就可以把问题转化为和为i的最小元素数,用dp就行。
求出dp数组后再依次考虑每个代价i,看删除了和为i的几个元素后,还需要做几次加1的操作,最后取最优解即可。
在更新ans的时候忘记考虑s - i后刚好是x的倍数的情况了,卡了二十分钟
全部评论

有点牛
请问第一题是那个配对括号的题吗?
都是编程题吗
请问第二题的dp[i]表示什么?
相关推荐

点赞 评论 收藏
分享
07-18 14:03
门头沟学院 Java 点赞 评论 收藏
分享