携程笔试10.10
第四题 q次询问区间内交替与或的结果 怎么做呀
全部评论
不知道,我一个for循环他也能超时、还能怎么优化
最后一题是这样的
首先,数字范围是0到2的30次方,所以可以把数字分成30个bit来进行处理,最后把30个bit拼接起来就行
然后Tricky的点来了,如果出现了&0,那么前面无论是0还是1最后都会变成0,如果出现了|1,前面无论是0还是1都会变成1,也就是说前序的信息都丢失了,有用的就是最新出现的关键位是&0还是|1
然后你需要维护两个n*30的数组用来记录每个数字每个bit的前序情况,进行两次正向遍历,分别记录Op1和Op2的结果,对于OP1来说,如果第奇数个数字的某个bit出现了0,那么后续的结果都是0,如果第偶数个数字的某个bit出现了1,那么后续都是1,OP2是相反的
然后对于给出的l和r,需要判断r的关键位是不是小于l,如果不是就按关键位记录的结果,是就按他自己的结果,反正写起来很复杂,前三题打了30分钟,最后一题一个半小时
离线做OOM了
T4 暴力超时,可以尝试离线查询优化
佬~你这套有选择题吗,有没有一道线性回归的单选题呀,想半天了没想通
暴力超时25%,二分不超时但是二分0%😭
相关推荐