蚂蚁工程技术岗3.21笔试

投票
最后一题找不到很具体的规律,感觉时间不够,就直接交了
全部评论
第二题思路:第一个点为R,或W,只有两种情况,两次bfs确定次数
4 回复 分享
发布于 2023-03-21 20:44 北京
最后一题暴力只有20%。。。没时间写第二题😢
2 回复 分享
发布于 2023-03-21 20:43 北京
第二题是这样吗:#include<bits/stdc++.h> using namespace std; typedef long long ll; const ll mod = 1e9+7; const int MAXN=1e5 + 5; vector<int>edges[MAXN]; string color; int dp[MAXN][2]; int vis[MAXN]; void add(int u,int v){ edges[u].push_back(v); edges[v].push_back(u); } void dfs(int u){ dp[u][0]=0; dp[u][1]=1; vis[u]=1; for(auto& v:edges[u]){ if(vis[v]==1)continue; vis[v]=1; dfs(v); vis[v]=0; if(color[v] == color[u]){ dp[u][0]+=min(dp[v][0]+1,dp[v][1]); dp[u][1]+=min(dp[v][1],dp[v][0])+1; }else { dp[u][0]+=min(dp[v][0],dp[v][1]+1); dp[u][1]+=min(dp[v][1],dp[v][0]+1); } } } int main(){ int n;cin>>n; cin>>color; for(int i=1;i<n;i++){ int a,b;cin>>a>>b; add(a-1,b-1); } dfs(0); cout<<min(dp[0][0],dp[0][1])<<endl; return 0; }
2 回复 分享
发布于 2023-03-21 21:07 湖南
最后一题先暴力输出前几项,发现从奇数得到偶数,是直接 f(7)*7 = f(8), 但是偶数得到奇数没发现什么规律。。
1 回复 分享
发布于 2023-03-21 20:43 北京
有没大佬讲一下最后一题的规律
点赞 回复 分享
发布于 2023-03-21 20:36 北京
为什么第二题dp超时啊
点赞 回复 分享
发布于 2023-03-21 20:42 北京
为什么第二题dfs过不了
点赞 回复 分享
发布于 2023-03-21 20:44 北京
蹲一个大佬讲讲第三题
点赞 回复 分享
发布于 2023-03-21 20:46 北京
第二题是树形dp题目,一次dfs就能出结果。要记录当前子树的节点数以及子树节点满足两两颜色不同需要的次数,然后就是定义状态转移方程出结果。
点赞 回复 分享
发布于 2023-03-21 21:00 江苏
第三题, 如果n是偶数, dp[n]=(n-1)*dp[n-1); 如果n是奇数, dp[n] = (n-1)!*(n-1) + (n-1)*dp[n-1)?
点赞 回复 分享
发布于 2023-03-21 21:08 上海
同问最后一题
点赞 回复 分享
发布于 2023-03-22 08:52 江苏

相关推荐

10-28 11:04
已编辑
美团_后端实习生(实习员工)
一个2人:我说几个点吧,你的实习经历写的让人觉得毫无含金量,你没有挖掘你需求里的 亮点, 让人觉得你不仅打杂还摆烂。然后你的简历太长了🤣你这个实习经历看完,估计没几个人愿意接着看下去, sdk, 索引这种东西单拎出来说太顶真了兄弟,好好优化下简历吧
点赞 评论 收藏
分享
11-13 20:32
门头沟学院 Java
面向未来编程code:我没看到他咋急,他不就问你个问题。。。
点赞 评论 收藏
分享
评论
点赞
4
分享
牛客网
牛客企业服务