当前位置: 首页 > news >正文

微网站模板怎么做上海网站定制公司

微网站模板怎么做,上海网站定制公司,自己做返利网站吗,中国城乡住房和建设部网站首页2846. 边权重均等查询 题目描述: 现有一棵由 n 个节点组成的无向树,节点按从 0 到 n - 1 编号。给你一个整数 n 和一个长度为 n - 1 的二维整数数组 edges ,其中 edges[i] [ui, vi, wi] 表示树中存在一条位于节点 ui 和节点 vi 之间、权重…

2846. 边权重均等查询

题目描述:

现有一棵由 n 个节点组成的无向树,节点按从 0 到 n - 1 编号。给你一个整数 n 和一个长度为 n - 1 的二维整数数组 edges ,其中 edges[i] = [ui, vi, wi] 表示树中存在一条位于节点 ui 和节点 vi 之间、权重为 wi 的边。

另给你一个长度为 m 的二维整数数组 queries ,其中 queries[i] = [ai, bi] 。对于每条查询,请你找出使从 ai 到 bi 路径上每条边的权重相等所需的 最小操作次数 。在一次操作中,你可以选择树上的任意一条边,并将其权重更改为任意值。

注意:

  • 查询之间 相互独立 的,这意味着每条新的查询时,树都会回到 初始状态 。
  • 从 ai 到 bi的路径是一个由 不同 节点组成的序列,从节点 ai 开始,到节点 bi 结束,且序列中相邻的两个节点在树中共享一条边。

返回一个长度为 m 的数组 answer ,其中 answer[i] 是第 i 条查询的答案。

示例1:

示例2:

提示:

  • 1 <= n <= 10^4
  • edges.length == n - 1
  • edges[i].length == 3
  • 0 <= ui, vi < n
  • 1 <= wi <= 26
  • 生成的输入满足 edges 表示一棵有效的树
  • 1 <= queries.length == m <= 2 * 104
  • queries[i].length == 2
  • 0 <= ai, bi < n

思路:

要我们以queries数组为遍历基础,先找到ai到bi的路径,然后统计路径上的权值,找到频次最高的权值出现的次数,用路径长度-频次即为所求的最小操作次数。

求最近公共祖先,LCA(Least Common Ancestors),即最近公共祖先,这种描述是基于树结构的,也即我们通通常只在树结构中考虑祖先问题。树实际上就是图论中的有向无环图,而要研究LCA问题,首先我们要指定树中的一个顶点为根节点,并以该节点遍历有向无环图,生成一颗DFS序下的树,假设我们要查询的两个节点为u,v,DFS序下根节点到两点的最短路径分别是(r,u),和(r,v),LCA就是(r,u)与(r,v)公共路径的最后一个节点。

而求两点间的路径长度,可以通过倍增法求 LCA 来实现。我们记两点分别为 u 和 v,最近公共祖先为 x,那么 u 到 v的路径长度就是 depth(u)+depth(v)−2×depth(x)。

另外,我们可以用一个数组 cnt[n][26] 记录根节点到每个节点上,每个边权重出现的次数。那么 u 到 v 的路径上,出现次数最多的边的次数就是 max⁡0≤j<26cnt[u][j]+cnt[v][j]−2×cnt[x][j]。其中 x 为 u和 v的最近公共祖先。

代码:

class Solution {
public:vector<int> minOperationsQueries(int n, vector<vector<int>>& edges, vector<vector<int>>& queries) {int m = 32 - __builtin_clz(n);vector<pair<int, int>> g[n];int f[n][m];int p[n];int cnt[n][26];int depth[n];memset(f, 0, sizeof(f));memset(cnt, 0, sizeof(cnt));memset(depth, 0, sizeof(depth));memset(p, 0, sizeof(p));for (auto& e : edges) {int u = e[0], v = e[1], w = e[2] - 1;g[u].emplace_back(v, w);g[v].emplace_back(u, w);}queue<int> q;q.push(0);while (!q.empty()) {int i = q.front();q.pop();f[i][0] = p[i];for (int j = 1; j < m; ++j) {f[i][j] = f[f[i][j - 1]][j - 1];}for (auto& [j, w] : g[i]) {if (j != p[i]) {p[j] = i;memcpy(cnt[j], cnt[i], sizeof(cnt[i]));cnt[j][w]++;depth[j] = depth[i] + 1;q.push(j);}}}vector<int> ans;for (auto& qq : queries) {int u = qq[0], v = qq[1];int x = u, y = v;if (depth[x] < depth[y]) {swap(x, y);}for (int j = m - 1; ~j; --j) {if (depth[x] - depth[y] >= (1 << j)) {x = f[x][j];}}for (int j = m - 1; ~j; --j) {if (f[x][j] != f[y][j]) {x = f[x][j];y = f[y][j];}}if (x != y) {x = p[x];}int mx = 0;for (int j = 0; j < 26; ++j) {mx = max(mx, cnt[u][j] + cnt[v][j] - 2 * cnt[x][j]);}ans.push_back(depth[u] + depth[v] - 2 * depth[x] - mx);}return ans;}
};

大意我懂了,但是俺似乎写不出来这么完整的,哭!然后继续学!

http://www.yayakq.cn/news/897182/

相关文章:

  • 四网合一的网站域名只做邮箱没网站要备案吗
  • 做投票网站搜一搜百度
  • 找工作去哪个网站drupal 网站实例
  • 台州市建设规划局路桥分局网站网站建设费用预算明细
  • 做网站怎样让内容在小窗口打开品牌网线有哪些
  • 用asp.net做的网站网络营销如何进行网站推广
  • 生物科技网站建设 中企动力北京网站平面模板
  • 金华网站建设大型网页建设网页模板下载大全
  • 网站开发项目实战视频高新网站制作哪家好
  • 温州网站建设wzwmwl重庆电子商务公司排名
  • 保险网站建设方案软件开发制作平台
  • 邯郸网站设计多少钱讨债女企业家中标公司被强执
  • 服饰类网站开发项目响应式网站建设软文
  • 网站建设作业怎么写网站设计不同的原因
  • 昆明企业做网站最近的新闻内容
  • 做户外运动的网站网站审核文件
  • 网站欣赏与创建网页17. 整个网站建设中的关键是
  • 做水果网站需要些什么微信小程序开发如何制作
  • 苏州好的做网站的公司有哪些apache怎么配置网站
  • 网站建设如何收费站群管理软件
  • 怎么把做的网站发到网上去网站描文本
  • 做产品推广的网站有哪些软件开发者对要发布的软件进行数字签名
  • 云服务器做视频网站星空传媒有限公司网站
  • 推广网站的论坛网页设计平面设计
  • 全能网站建设完全自学手册监理企业建设部网站年报
  • 做网站 多少人网站格局
  • wdcp网站搬家wordpress 春菜
  • 图片交易网站源码北京网站建设模板下载
  • 额尔古纳网站建设科技创新的重要前沿是
  • 郑州做网站哪家比较好中型企业名录查询系统