牛客算法竞赛入门课第一节习题Part2( Flip Game ~ 矩阵消除游戏)

牛客算法竞赛入门课第一节习题Part2( Flip Game ~ Subsequence)

Flip Game

题意:

有一个4*4的棋盘,每个格子上都有一个黑白两面的棋子。每次任意选择一个棋子,把这颗棋子和他周围的棋子都反过来。当所有的棋子是同一个颜色时,游戏结束。

问给定的初始状态能否完成游戏,若能,输出最小的反转次数。

思路:

因为是最小的翻转次数,而且我们无法确定如果翻转才是最优解,所以我们只能对每一种状态都枚举他的所有可能状态,BFS求解。

但同时难点在于如何储存当前的状态,如果用数组的话,结合队列不是很好操作。我们可以用二进制表示每个棋子的黑白状态,这样就可以用一个数tmp来表示每一种状态。

当tmp==0或是tmp==1<<16(65535)时游戏结束。

Subsequence

题意:

求一个序列的连续子序列的和>=s的最短长度。

思路:

双指针。

先求一个前缀和数组,因为是连续子序列[l,r],所以sum[r]-sum[l-1]就是该子序列元素的和。

取两个指针为l,r,初始化均为0。

先不断右移r指针使得区间和>=s,当区间和>=s时不断右移l指针,并且记录r-l的最小值。

矩阵消除游戏

思路:
因为不知道选哪一行哪一列是最优的,而且数据范围也比较友好,就可以二进制枚举选几个行,剩下的都选列。在选择的过程中肯定是选择得分最多的行。

全部评论

相关推荐

02-01 12:05
复旦大学 Java
腾讯的提前批大概率应该是没有笔试的,但是这个时候有相当部分的同学简历估计都没有准备好,没准备好的同学也不用急,大部分都是3月之后开,这个时候开的绝大多数都是神仙打架,问的东西也比较难,打算投递的同学也多看下计算机网络和操作系统,腾讯对这部分的知识问的比较多。另外多刷下牛客的热门题库,刷题注意刷ACM模式,和牛客的周赛题,腾讯有的部门会从这里面出原题。我是@程序员花海关注我,带你了解更多校招资讯!
程序员花海:还没有来得及准备的同学可以看下学习路线:https://www.nowcoder.com/discuss/824693499982315520?sourceSSR=users算法题:https://www.nowcoder.com/feed/main/detail/20e7a999fa04485b88340a274411ca0d?sourceSSR=users八股文:https://www.nowcoder.com/discuss/833102362771251200?sourceSSR=users简历书写方式:https://www.nowcoder.com/discuss/839907820706205696?sourceSSR=users都是以前在牛客发的文章~
软开人,秋招你打算投哪些...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务