首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
课程
专栏·文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
在线笔面试、雇主品牌宣传
登录
/
注册
今晚不熬夜_
广东工业大学 电子信息类
发布于广东
关注
已关注
取消关注
@年轻的靓仔在吐槽:
百度笔试第三题
小红拿到了一棵树,每个节点被染成了红色或者蓝色。小红定义每条边的权值为:删除这条边时,形成的两个子树的同色连通块数量之差的绝对值。小红想知道,所有边的权值之和是多少?输入描述第一行输入一个正整数 n ,代表节点的数量。第二哈输入一个长度为 n 且仅由 R 和 B 两种字符组成的字符串。第 i 个字符为 R 代表 i 号节点被染成红色,为 B 则被染成蓝色。接下来的 n−1 行,每行输入两个正整数 u 和 v ,代表节点 u 和节点 v 有一条边相连。1≤n≤200000int main() { int n; cin >> n; vector<bool> colors_bl(n + 1, false); vector<unordered_set<int>> edges(n + 1, unordered_set<int>()); for (int i = 1; i < n + 1; ++i) { char ch; cin >> ch; if (ch == 'B') { colors_bl[i] = true; } } for (int i = 0; i < n - 1; ++i) { int e1, e2; cin >> e1 >> e2; edges[e1].insert(e2); edges[e2].insert(e1); } vector<bool> is_seen(n+1, false); vector<int> dp(n+1, 0); // dfs返回结果是该节点作为根节点所包含的联通数量 function<int(int, vector<bool>&)> dfs = [&](int i, vector<bool>& is_seen) { int tmp = 0; int sum = 0; vector<int> tmp_v; for (auto&& v : edges[i]) { if (is_seen[v]==false) { tmp++; is_seen[v] = true; int nums = dfs(v, is_seen); sum += nums; tmp_v.push_back(v); } } dp[i] = sum; if (tmp == 0) { dp[i] = 1; return 1; } else { if (tmp == 1) { if (colors_bl[i] != colors_bl[tmp_v[0]]) { dp[i] += 1; } } else { if (colors_bl[i] == colors_bl[tmp_v[0]] && colors_bl[i] == colors_bl[tmp_v[1]]) { dp[i] -= 1; } else if (colors_bl[i] != colors_bl[tmp_v[0]] && colors_bl[i] != colors_bl[tmp_v[1]]) { dp[i] += 1; } } } return dp[i]; }; is_seen[1] = true; auto res = dfs(1, is_seen); // cout << endl; unordered_set<int> ss; int sum = 0; for (int i = 1; i <= n; ++i) { for (auto&& it : edges[i]) { int a1 = min(dp[i], dp[it]); int a2 = abs(res - a1); if (colors_bl[i] == colors_bl[it]) { a2++; } sum += abs(a2 - a1); } } cout << sum/2 << endl;}#include "header.h"int main() { int n; cin >> n; vector<bool> colors_bl(n + 1, false); vector<unordered_set<int>> edges(n + 1, unordered_set<int>()); for (int i = 1; i < n + 1; ++i) { char ch; cin >> ch; if (ch == 'B') { colors_bl[i] = true; } } for (int i = 0; i < n - 1; ++i) { int e1, e2; cin >> e1 >> e2; edges[e1].insert(e2); edges[e2].insert(e1); } vector<bool> is_seen(n+1, false); vector<int> dp(n+1, 0); // dfs返回结果是该节点作为根节点所包含的联通数量 function<int(int, vector<bool>&)> dfs = [&](int i, vector<bool>& is_seen) { int tmp = 0; int sum = 0; vector<int> tmp_v; for (auto&& v : edges[i]) { if (is_seen[v]==false) { tmp++; is_seen[v] = true; int nums = dfs(v, is_seen); sum += nums; tmp_v.push_back(v); } } dp[i] = sum; if (tmp == 0) { dp[i] = 1; return 1; } else { if (tmp == 1) { if (colors_bl[i] != colors_bl[tmp_v[0]]) { dp[i] += 1; } } else { if (colors_bl[i] == colors_bl[tmp_v[0]] && colors_bl[i] == colors_bl[tmp_v[1]]) { dp[i] -= 1; } else if (colors_bl[i] != colors_bl[tmp_v[0]] && colors_bl[i] != colors_bl[tmp_v[1]]) { dp[i] += 1; } } } return dp[i]; }; is_seen[1] = true; auto res = dfs(1, is_seen); // cout << endl; unordered_set<int> ss; int sum = 0; for (int i = 1; i <= n; ++i) { for (auto&& it : edges[i]) { int a1 = min(dp[i], dp[it]); int a2 = abs(res - a1); if (colors_bl[i] == colors_bl[it]) { a2++; } sum += abs(a2 - a1); } } cout << sum/2 << endl;}
点赞 7
评论 3
全部评论
推荐
最新
楼层
滴滴
校招火热招聘中
官网直投
相关推荐
牛客102245643号
05-12 10:52
北京邮电大学 电子信息类
记录下自己俩月的暑期历程
bg:本2硕2 两端大厂实习 字节/小红书 JAVA选手2.26-3月中旬:这一阶段主要是投递,美团从2.26开始,打响了暑期的第一枪。先后投了美团、腾讯、小米、京东、字节等等。这一阶段没啥面试,也是结束了小红书的实习~开始复习..3月中旬-3月末:依旧没有面试,开始投阿里系,开始笔试...三月底面美团,三个志愿直接挂俩,你放三个志愿ex我呢,***三月也面了腾讯,捞我的部门都是Go/Cpp,面试体验一般,但是面试官确实感觉有技术深度,之前我实习的mt就是腾讯的,说腾讯技术比较lj,但是感觉还好~蚂蚁笔试直接g,第一题浮点数处理都没整出来,饿了么笔试/恒生笔试/智能信息笔试...太多了记不清...
投递饿了么等公司10个岗位 >
点赞
评论
收藏
转发
数字马力谁去
05-13 16:02
湖南师范大学 电子信息类
数字马力不当人?
据我了解,数字马力校招HC已经几乎没有了,然而,招聘上全是它们的招聘信息,不知为什么,难道是为了打个广告,提高知名度吗,第二,我投递的时候是在三月,笔试的时候是在四月,面试的时候是在五月,再来讲讲面试时候的经历吧,首先面试官并不会让你做自我介绍,根本不想对你有任何了解,直接开局问你做了什么项目,实习干了什么,面试时候的态度更是嘲讽,一个一边面,一直笑,旁边还有个人,回答完,就哈哈哈的大笑,嘲笑无余,搞不懂,一个外包,也不是蚂蚁的正式员工,这么讽刺,不知道还有多强呢,然后转手给你挂掉,不知有什么意义
点赞
评论
收藏
转发
蓁蓁欣欣
05-10 15:22
已编辑
大连理工大学 计算机类
求帮忙看看简历!
找暑期实习,这个简历可以吗,听劝😢-------------------------------------------------------更新:听取了网友一些建议,重新修改了一下简历想问一下如果课内没有做跟java有关的项目的话,需要自己网上找几个做吗?会不会含金量不高
点赞
评论
收藏
转发
superp
05-11 17:34
已编辑
南京理工大学 计算机类
佬们,帮看看简历
2024/5/11 更新大佬们好,最近刚把小论文写完准备走Java后端,目前Java基础八股看完了,前端的八股也因为面试,带着看了一点,leecode刷了150题。然后呢,现在还0offer,大厂约了十几次面试,总结为准备的很不充分。手撕的题一般能撕出来,主要问题在于八股不行,而且我本科非科班,基础就更不行了。。。最近的打算就是:再沉淀沉淀,继续找实习,不管能不能找到,这个精神还是得有。反正小论文搞完了,后面就差投了。面经最近总结出来放牛客上。还有呀哈哈哈大家,我发现评论区对我的颜值有很高的评价,谢谢你们啦哈哈哈。-------------------2024/3/25听劝!想找实习leecode刚开始刷题,倒是本科刷牛客刷了一百多道,现在都忘了,八股没背。问题1:移动端开发/Java后端开发/前端开发 我走哪一个比较好?问题2:能找到大厂实习吗?问题3:研二目前还没小论文,敢投实习吗?请佬们指点迷津#简历被挂麻了,求建议#
投递牛客等公司10个岗位
简历被挂麻了,求建议
点赞
评论
收藏
转发
点赞
收藏
评论
分享
回复帖子
全站热榜
1
...
携程oc了
2.5W
2
...
美团-Java后端-平台技术部-一面凉经(复活赛)
1.3W
3
...
比亚迪机械面经&薪资爆料&面试题目&解答思路
1.2W
4
...
【话术建议】求职者和企业的互骗话术?
8741
5
...
瑞幸java校招二面(史诗级80min)
7762
6
...
快手二面g
4927
7
...
【进面核心】如何紧盯个人简历与企业需求的契合度
4863
8
...
滴滴秋储后端(秒挂)
4701
9
...
字节抖音电商后端日常实习一二三面已oc
4484
10
...
腾讯 后台开发 一面
4015
正在热议
#
牛客帮帮团来啦!有问必答
#
710268次浏览
11527人参与
#
许愿池
#
77188次浏览
1541人参与
#
通信硬件人笔面经互助
#
107736次浏览
2178人参与
#
你的秋招进展怎么样了
#
500852次浏览
13424人参与
#
找工作时遇到的神仙HR
#
177651次浏览
1744人参与
#
如何写一份好简历
#
259292次浏览
3918人参与
#
铜五铁六真的存在吗?
#
27339次浏览
293人参与
#
找工作,你会甘心进小厂还是猛冲大厂
#
35045次浏览
352人参与
#
产品实习,你更倾向大公司or小公司
#
35949次浏览
548人参与
#
非技术岗是怎么找实习的
#
73859次浏览
1385人参与
#
市场营销面经
#
4544次浏览
125人参与
#
互联网公司评价
#
79558次浏览
1087人参与
#
通信硬件薪资爆料
#
196302次浏览
1759人参与
#
你的秋招进行到哪一步了
#
352975次浏览
6269人参与
#
硬件兄弟们 甩出你的华为奖状
#
27511次浏览
180人参与
#
无实习如何秋招上岸
#
224675次浏览
3518人参与
#
投了多少份简历才上岸
#
56655次浏览
947人参与
#
面试中的破防瞬间
#
82563次浏览
1015人参与
#
通信/硬件的薪资开多少,才值得去?
#
10739次浏览
140人参与
#
产品人求职现状
#
50589次浏览
747人参与
牛客网
牛客企业服务