9.6腾讯笔试第5题红黑棋

这道题目测是动态规划,但是不好证明算法的正确性。
考虑从左往右放棋子,dp[i][j]表示放i个棋子,其中j个红棋,i-j个黑棋,并且这些红棋和黑棋都递增的最小移动步数,这里猜测剩余还没有考虑的棋子的顺序一定是确定的,否则dp的解法是错误的。那么剩余没摆放的棋子的序列是什么,应该就是原序列删除前j个红棋和前i-j个黑棋的序列,这里把这些棋挪到最前面,剩余棋子的相对顺序应该是不变的,如果变化了,那么保持不变可减少几步移动,这里出题人应该有严格证明。

接下来就是考虑dp转移了,在dp[i][j]状态上,下一个要放的棋子要么是j+1红棋,或者i-j+1黑棋,因此状态会转移到dp[i+1][j+1]和dp[i+1][j],转移代价是多少,就是剩余序列中第j+1红棋和i-j+1黑棋移动到下标i+1的距离,因为这里状态已经是O(n^2)的复杂度,所以转移的复杂度必须是O(1),所以要预处理r[i][j],b[i][j]表示前i小红棋和前j小黑棋都移动到最前面,剩余序列第i+1红棋所在位置和第j+1黑棋所在位置,这里红黑分开处理;比如考虑第i+1红棋所在位置,那么原序列中比i+1大的红棋必然在红棋前面,这个直接统计一下,剩下就是看原序列中比j大的黑棋,j从大到小枚举,也就是算r[i][n],r[i][n-1],...,r[i][1], 由于j从大到小递减,那么r的值肯定是递增的,这里自己想一下,很难描述。
#腾讯##笔试题目#
全部评论
我晚会贴个代码
1
送花
回复
分享
发布于 2020-09-07 07:19
可以贴下代码吗?
点赞
送花
回复
分享
发布于 2020-09-07 00:51
滴滴
校招火热招聘中
官网直投
红黑棋题解!:https://blog.csdn.net/qq_38649940/article/details/108438347 (就是ARC原题...bit预处理然后dp!
点赞
送花
回复
分享
发布于 2020-09-07 11:57

相关推荐

​2022年9月,重庆疫情开始严重,可怜的重邮学生们,遭遇了封宿舍这一最高待遇,每天吃饭都是只能宿舍代表出去领。虽然说现在来看马上处于全面解封的边缘,但是对于当时的小Z来说,出去实习已经成了想都不敢想的事情。再加上当时正值23届秋招,就业形势下降到了冰点,小Z把计划推迟到了大三下,准备那个时候再找实习,现在正好把不熟悉的知识再补强一下。​经历过的人都知道,一旦在一个环境中开摆,没有任何事物刺激,是完全不会想着学习的,于是小Z在网课+LOL的陪伴下,结束了大三上。        2023年1月,全面解封。疫情神奇地消失了​大三下一开学,身边的同学都在讨论暑期实习,小Z的大四学长一起组织吃了个饭,学长们有两个签了字节,一个签了百度,还有一个出国。另外,同为大三下的另一位同事已经开始百度约面了,小Z开始慌了,他现在什么都还没有准备。学长告诉他,现在马上准备,三月底开始投还有机会,一定要实习,没有实习秋招是很难办的。而且软件学院这边会有实训,这个打黑工一定要逃掉,非常浪费时间,在外面实习可以抵这个实训。​小Z写好了简历,准备先拿小公司练手,然而招iOS实习生的小公司不多,就先面了一个重庆本地的小公司,问的问题很奇怪,没有问常规的八股,问的都是场景设计与项目,这是小Z的第一次面试,发挥的很不好,然而最后HR通知他过了,小Z决定拖一会,再看看大厂有没有机会。这个时候小Z不知道,正好是23届春招补录的时候。身边同时找暑期实习的网校同事们也反馈不好找实习。​由于之前没怎么复习,基础知识不够扎实,算法能力也不出众,将近20家中大厂都挂了,由于这个时候已经4月20日,马上软院这边开始实训,必须要交在外实习证明,于是小Z联系了之前重庆本地小公司HR,同意去那边实习。补贴是元100/天。 #我的实习求职记录#
点赞 评论 收藏
转发
3 5 评论
分享
牛客网
牛客企业服务