淘天暑期实习算法终于oc

Timeline:
4.1 投递
4.3 测评+笔试
4.8 一面
4.10 二面
4.12 hr面
4.23 oc
4.26 录用意向

苦等11天终于oc了,阿里池子都要泡烂了
全部评论
你hr面完后多久变为等待面试结果的啊佬
点赞 回复 分享
发布于 2024-04-24 10:01 浙江
第一次看见校友,太强辣
点赞 回复 分享
发布于 2024-04-29 16:10 澳大利亚
佬有约体检吗
点赞 回复 分享
发布于 2024-05-09 13:01 上海

相关推荐

03-08 16:59
已编辑
东北大学 Java
#淘天笔试# #淘天# #笔试# 考虑换根DP,先随便找个点做根,每个点只统计这个有根树下它的子树对它的贡献,也就是if(color[u] != color[v]) color[u] += color[v];这样我们只能统计出子树的贡献,我们还需要父亲的贡献,父亲的贡献我们考虑扩展并查集,在dfs过程中顺便合并一下就能够得到每个点所在并查集的size,如果一个点和它的父亲不同颜色,那么就是相同并查集,直接用并查集size减去dp求出的子树贡献就是父亲的贡献,然后第二遍dfs,把每个点任意一种颜色都试一下,我们提前知道子树的贡献是多少,可以根据现在我们变的颜色统计一下现在的子树和,看看父亲跟他现在是不是一个颜色,是的话不加贡献,不然加上贡献,和ans取最大值即可。代码如下:#include# include#include# include#include# include#include# include#include# include#include# include#includeusing ll = long long;using ull = unsigned long long;const int maxn = 1e6 + 5;int fa[maxn],sum[maxn],siz[maxn];std::string color;char col[] = {'R','G','B'};int ans  = 0;int find(int x){    return x == fa[x] ? x : find(fa[x]);}void merge(int x,int y){    x = find(x), y = find(y);    if(x == y) return;    siz[x] += siz[y];    fa[y] = x;}std::vector g[maxn];void dfs(int u,int fa){    sum[u] = 1;    for(int i = 0;i < g[u].size();i++){        int v = g[u][i];        if(v == fa) continue;        dfs(v,u);        if(color[u] == color[v]){            sum[u] += sum[v];            merge(u,v);        }    }}void dfs2(int u,int fa){    int sfa = (find(u) == find(fa)) ? siz[find(u)] - sum[u] : siz[find(fa)];    for(int i = 0;i < 3;i++){        char c = col[i];        int s = 1;        for(auto& v : g[u]){            if(v == fa) continue;            if(c != color[v]) s += sum[v];        }        if(c != color[fa]) s += sfa;        ans = std::max(ans,s);    }    for(auto& v: g[u]){        if(v == fa) continue;        dfs2(v,u);    }}void solve(){    int n;    std::cin >> n;    std::cin >> color;    for(int i = 1;i <= n;i++){        siz[i] = 1;        fa[i] = i;    }    for(int i = 0;i < n - 1;i++){        int u,v;        std::cin >> u >> v;        g[u].push_back(v);        g[v].push_back(u);    }    dfs(1,0);    dfs2(1,0);    std::cout << ans << '\n';}int main() {    int T;    T = 1;    while(T--) solve();    return 0;}
投递淘天集团等公司10个岗位 笔试
点赞 评论 收藏
分享
03-07 23:10
已编辑
天津市咸水沽第一中学 Java
部门:做淘宝首页和流量推送策略250302 70min实习拷打。这项目你感觉你在这个过程中有哪些亮点以及能进行一下总结吗?这个项目的时候,那你有没有达到你们预期?以及有没有还能进行一些改进的点?    进程中有一共有哪些状态,以及它这些状态是怎么去流转的?进程和线程有啥区别?    Java数组、ArrayList和LinkedList有啥区别?HashMap的工作原理?exception 和 error 它的一个区别有啥呀?throw 和 throws 的区别?    重定向和转发,forward和redirect两者的区别?    介绍一下悲观锁和乐观锁?    spring 里面bean的生命周期是怎么去创建和消亡的呀?spring bean 的自动生成的一个原理?    MySQL里面的那个索引的作用是啥呀?它有什么优缺点吗?B+树索引如何实现的呢? left semi join和 left anti join的区别?count(1), count(*)和count字段的区别?    哪些场景是去使用Redis?Redis 和 memcache有啥区别?什么是缓存穿透?以及我们在该怎么去解决呢? Flink 有用过没有?Hive会出现一些数据倾斜,有了解吗?场景题:给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url算法题:判断是否是回文整数SQL题:事件表event表有3个字段event_id:事件id,event_time:事件时间,user_id:用户id。使用SQL查询同一用户两个事件的时间间隔。输出4列:事件ID,事件时间,用户id,时间间隔
查看24道真题和解析
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务