滴滴安全工程师笔试题

滴滴真是傲娇,上次内推3道题目AC都没有面试。这次只做出来了一道题目。唉唉#滴滴#
全部评论
EXO ME? 上次安全的卷子是2道编程题吧 此外就是笔试题只是其中一个参考,简历也是筛选标准啊
点赞 回复 分享
发布于 2017-09-10 17:32
滴滴11号在武汉有宣讲会,有武大的小伙伴一起吗
点赞 回复 分享
发布于 2017-09-10 17:12
#include <cstring> #include <cstdio> #include <algorithm> const int MAXN = 110000; namespace trie { struct Node { int ch[2]; int id; } d[MAXN*35]; int tot = 0; inline int newNode () { memset(d+(++tot), 0, sizeof d[0]); return tot; } inline void insert(int val, int id) { //printf("ins:%d\n", val); int mask = 1<<29, u = 0, t; d[u].id = id; while(mask) { t = bool(val&mask); if(!d[u].ch[t]) d[d[u].ch[t] = newNode()].id = id; else d[d[u].ch[t]].id = id; u = d[u].ch[t]; mask >>= 1; } } inline int query(int val) { int mask = 1<<29, u = 0, t; while(mask) { t = !(bool(val&mask)); if(!d[u].ch[t]) u = d[u].ch[!t]; else u = d[u].ch[t]; mask >>= 1; } return d[u].id; } } inline int getInt() { int ret = 0; char ch; bool f = false; while((ch = getchar()) < '0' || ch > '9') f |= (ch == '-'); do{ret *= 10; ret += ch - '0';} while((ch = getchar()) >= '0' && ch <= '9'); return f ? -ret : ret; } int nums[MAXN]; int pref[MAXN]; int main() { int n; n = getInt(); for(int i = 1; i<=n; i++) nums[i] = getInt(); int ans = 0, l, r; for(int i = 1; i<=n; i++) pref[i] = pref[i-1]^nums[i]; trie :: insert(0, 0); r = 1; for(int i = 1; i<=n; i++) { int lp = trie :: query(pref[i]); //printf("p:%d q:%d\n", i, lp); if((pref[lp]^pref[i]) > ans) { ans = pref[lp]^pref[i]; l = lp; r = i; } trie :: insert(pref[i], i); } printf("%d %d %d\n", ans, l+1, r); }
点赞 回复 分享
发布于 2017-09-10 17:07
而且,另一道是题目直接没有看懂..
点赞 回复 分享
发布于 2017-09-10 17:07

相关推荐

评论
点赞
收藏
分享

创作者周榜

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