关注
第一题:
X是1的位N在那个位置也必须是1,设X是1的位数量为n_x
Y是1的位N在那个位可能是1,设Y是1的位数量为n_y
那么这个问题就可以改成,n_y个坑,其中有n_x个坑已经种了萝卜,你至少要种L个萝卜,至多能种R个萝卜。
这是一个组合数求和的问题,需要注意非法情况,如Y|X != Y || X&Y != X(即在坑以外的地方种萝卜)还有n_x > R || n_y < L(即萝卜不够用或坑不够用)
第二题:
结论:两个湮灭术最优的情况一定是放在某个点的左边(或不放)和右边(或不放)
证明:如果两个湮灭术放在了某个点的同侧,则两个湮灭术之间肯定有一段区间为正,则该区间的点符合结论。
那问题就变成了left和right各炸哪段(或不炸)收益最大。此时可以用dp_left[i], dp_right[i],分别表示i左边(右边)的连续区间和最小值(<=0)。那只需要从左到右,从右到左dp记录前缀和的最小值。最后再遍历找到max(sum_all-dp_left[i]-dp_right[i])
第三题:
显然上界是12,因为全取2的幂肯定能覆盖全部魔方。如果我们记录当天所有编号12位各位是1的次数,记录完后再选12位里面出现次数最多的那位,去删除队列里有该位的,并维护这个全局的总数。
想象12位就是12个圈两两相交,从顶向下贪心出现总数最多的位(比如1),每次删除都会去掉一个大集合,只有一定不被包含的解才不会被删掉(即2/4/8...)删到最后队列为空,贪心得到最优解。
但是这种贪心复杂度很高,会超时。
优化思路:自底向上,既然大集合变小集合很慢,那就让小集合变大集合。
举个例子:9,3,11,2,7 这五个数分别代表5个圈,9&3==1说明9和3合并后成一个公共大圈1,3&11==3说明3和11合并成公共圈3,9&2==0说明没有公共圈,这是两个不相交的问题。
按照这个思路,我们可以维护一个链表,把第0个问题9加入链表。然后继续往后遍历num,遍历链表状态s,next_state = num & s。如果遍历链表s,存在一个使得next_state不为0说明它们可以变成一个集合更大的新问题,则更新s变为next_state;否则这是两个不相交的问题则将next_state加入链表。
比如9,3,11,2,7的过程就是
[9] 3,11,2,7
[1] 11,2,7
[1] 2,7
[1,2] 7
[1,2]
最后1,2就是所有状态合成后不相交的最优解
第三题优化后复杂度为O(nlogC),C是编号上界,最坏的情况就是链表马上就有12个问题,每个num都要遍历12次才合并进去(当然链表有12个可以直接break了)
第三题自底向上思路的证明:
两个问题只可能相交或不相交🍌
结论:若不相交,则以后都不可能相交
反证:
假设问题i,j不相交,k是从j更新得到的问题,k与i相交。
k与i相交得(k & i) != 0,k是从j更新得到的问题k = j & X (X是一组问题),则 (j & X & i) != 0,推出 (j & i) != 0(否则前者不成立),那么j与i相交,矛盾。
查看原帖
2 评论
相关推荐
点赞 评论 收藏
分享
01-16 22:31
赣南师范大学 运营
白火同学:1、简历可以浓缩成一页,简历简历先要“简”方便HR快速过滤出有效信息,再要“历”用有效信息突出个人的含金量。
2、教育背景少了入学时间~毕业时间,HR判断不出你是否为应届生。
3、如果你的平台账号效果还不错,可以把账号超链接或者用户名贴到对应位置,一是方便HR知道你是具体做了什么内容的运营,看到账号一目了然,二是口说无凭,账号为证,这更有说服力。 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 今年春招是金一银二嘛? #
27319次浏览 251人参与
# 机械制造2024笔面经 #
1514991次浏览 12994人参与
# 没关系,至少我的__很曼妙 #
11579次浏览 180人参与
# 软开人,秋招你打算投哪些公司呢 #
176316次浏览 1314人参与
# 牛客吐槽大会 #
10115次浏览 181人参与
# 帆软软件工作体验 #
10193次浏览 46人参与
# AI求职实录 #
16713次浏览 391人参与
# 快手年终开大包 #
3845次浏览 50人参与
# 抛开难度不谈,你最想去哪家公司? #
15016次浏览 217人参与
# 赚钱的意义在这一刻具象化 #
11317次浏览 211人参与
# 为什么有人零实习也能进大厂? #
14051次浏览 241人参与
# 你的第一家实习公司是什么档次? #
12558次浏览 134人参与
# 考研人,我有话说 #
163962次浏览 1243人参与
# 总结:哪家公司面试体验感最好 #
79642次浏览 445人参与
# 1月小结:你过的开心吗? #
4938次浏览 84人参与
# Prompt分享 #
17559次浏览 408人参与
# AI时代的工作 VS 传统时代的工作,有哪些不同? #
16090次浏览 368人参与
# 当你问AI“你会取代我的工作吗”,它说_? #
8756次浏览 232人参与
# 实习生活中那些难忘的瞬间 #
293259次浏览 3222人参与
# 实习最想跑路的瞬间 #
113083次浏览 694人参与