求助大家一道算法题!

第一题:一队列,n个人,其中有的人偷懒,你可以大声叫他们,大声叫第i个人的话,第i+1和第i-1个人这三个人都会从偷懒变回正常状态,问有k次大声叫别人的机会,最多有多少人处于正常状态,输入为n,k,s 其中n为队列人数,k为叫人次数,s为状态队列

例如图中的例子,状态队列中S代表在偷懒,.代表正常答案是6
#笔试题目#
全部评论
谈心就可以,从最边扫描某个点周围有3个s的,2个s的和1和s的,维持k大于0
点赞 回复 分享
发布于 2018-12-23 14:41
贪心
点赞 回复 分享
发布于 2018-12-23 14:41
数据范围小的话可以做个dp, dp i j k代表在第i个人处叫了j次的正常人数,k为0,1表示在不在这个点i叫,转移方程大概是dp[i][j][1]=max(dp[i][j][1],dp[i-1][j-1][0]+s[i-1]=='S'+s[i]=='S'+s[i+1]=='S',dp[i-1][j-1][1]+s[i+1]=='S'),dp[i][j][0]类似,边界处理一下
点赞 回复 分享
发布于 2018-12-23 14:49

相关推荐

评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客企业服务