9.23 百度笔试

1. 模拟
给一个01串,可以进行两种操作
00->11,10->01
要求最后所有的0在1前面,求最小操作次数

思路:遍历数组,找最前面的1下标,记为l
n->l反序遍历,遇到01变成10,操作次数加1,遇到00变成11,操作一次加一,其他不变
遍历完即可

2. 异或前缀和
给一个数组a1~an,和查询l,r,求al-ar区域的k进制异或和tk,求max(tk)-min(tk),k取值2-10

思路:维护S(j,k)表示0-j的k进制异或和,则tk = sub(S(r,k)-S(l-1,k),k),sub表示不进位减法
遍历k即可

3. 二分
给定由CM组成的字符串s{1~n},记s{1~l-1}以及s{r+1~n}的c的个数,和s{l~r}的m的个数的最大值为t(l,r)
求 max{t(l,r)}

思路:维护前缀和 c{0~n}和m{0~n}表示前n个字符里c和m的个数
则 t(l,r) = max{c(n)-c(r)+c(l-1),m(r)-m(l-1)}
注意到, 固定l, c(n)-c(r)+c(l-1)-m(r)+m(l-1)是单调的,也就是r变动一下,要么c的个数变多,要么m的个数变少
利用二分求c(n)-c(r)+c(l-1)-m(r)+m(l-1)=0的r代入即为最小的t(l,r)
遍历l,二分找r,求t(l,r)的最大值即可

#牛客AI配图神器#
#百度笔试##笔试##秋招笔试记录#
全部评论

相关推荐

01-01 10:21
门头沟学院 Java
谁懂啊!我实习遇到的公司,真的太把实习生当正式员工使唤了,刚入职没几天,连项目代码结构都没摸透,就被安排写项目了!一开始都是些接口对接、数据格式转换的基础活,听起来不难,但架不住我对项目的业务逻辑、代码规范一窍不通。对着前辈丢过来的需求文档,我一边查代码注释,一边翻技术文档,磕磕绊绊写完功能,也只知道 “这么写能跑通”,根本不明白 “为什么要这么设计”,妥妥的知其然不知其所以然。本以为这种基础活会干很久,结果没过多久,领导直接甩给我一个小功能的开发方案,让我负责从方案落地到功能对接、测试上线的全流程。当时我直接懵了,硬着头皮啃需求、画流程图、写核心代码,遇到不懂的就逮着前辈狂问,加班加点成了家常便饭。更没想到的是,后面居然让我独立负责一个模块的开发,还要做性能优化。从数据库索引调整,到接口响应速度提升,每一步都得自己琢磨、自己验证。那段时间真的累到飞起,每天下班脑子都是懵的尤其是发版的时候,我比谁都紧张,盯着监控屏大气不敢喘,生怕自己写的代码出 bug 导致系统崩溃。一旦出问题,就得立刻配合运维回滚版本,然后自己留下来加班排查修复,常常整栋办公楼只剩我一个人的工位亮着灯。每天加班到深夜,工作量比正式员工还饱和,我不止一次对着电脑发呆:我到底是来实习的,还是来打工的?虽然这段经历确实让我的技术能力突飞猛进,但那种被推着往前走的疲惫感,直到现在想起来都觉得累。
大家实习都在做什么?
点赞 评论 收藏
分享
想run的马里奥在学...:这个学历帮你扫平百分之80的障碍,投就完了,这会找不到就等3月暑期一样能找到
点赞 评论 收藏
分享
评论
2
2
分享

创作者周榜

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