深信服笔试8.18

被橄榄了

  • 1. dp。设f[i][j]为s串到i位置,t串到j位置的最大匹配数。先预处理每一个*的上一个字符是什么,再处理s串每个字符前面连续重复的有几个记为cnt[i],fij转移分情况,如果t[j]=='*',那么转移就是f[i][j] = max(f[i-cnt[i]][j - 1] + cnt[i] , f[i][j-1])。si为其他字母就是f[i][j] = max{f[i-1][j],f[i][j-1],f[i-1][j-1] + s[i] == t[j]};
  • 2. dp,f[i] = max(f[i] , f[last ]+ a[i]) 。1<=last <= i-k 。用前缀max来优化。f[i] = a[i] + pre[i-k], pre[i]=max(pre[i-1],f[i]);
  • 3.不给数据范围真的sb,直接跑了个阶乘枚举求最大值。这题应该没有多项式做法吧
#深信服##笔试##实习##秋招#
全部评论
第一题感觉是正则表达式变种 第二题打家劫舍变种 第三题就 回溯吧应该是 第四题太逆天了直接没看😅
4 回复 分享
发布于 08-19 12:53 上海
感谢分享
3 回复 分享
发布于 08-18 21:33 黑龙江
我第一题是双指针模拟的做法,请问这样会漏掉什么case吗
1 回复 分享
发布于 08-18 21:28 北京
请问第一题这个做法是100吗
点赞 回复 分享
发布于 08-19 22:06 陕西
第三题有点像状压dp+旅行商
点赞 回复 分享
发布于 08-25 20:24 四川

相关推荐

9 9 评论
分享
牛客网
牛客企业服务