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

[Non]树上乘法

[Non]树上乘法

大意

给定若干次操作,每次将 \(u \to v\) 的路径上的点的点权值都乘上 \(k\),最终求最大的边的编号。

思路

显然,你一直乘法一定会炸,对于加法运算,我们可以转化为加法与减法进行差分,对于乘法,我们是否可以考虑转为加法呢?答案是可以,转化为对数运算不就行了吗,每次加上 \(\log(k)\),这样不就不会超出范围了嘛。

然后,依旧树上差分,直接做就好。

代码

#include <bits/stdc++.h>
using namespace std;
const int N = 300010;
vector<int> g[N];
int fa[N][23], dep[N], n, q;
void dfs(int u) {for (int i = 0; i < g[u].size(); i++) {int v = g[u][i];if (v == fa[u][0]) continue;fa[v][0] = u;dep[v] = dep[u] + 1;dfs(v);}
}
void initLca() {for (int i = 1; i <= 22; ++i) {for (int j = 1; j <= n; ++j) {fa[j][i] = fa[fa[j][i - 1]][i - 1];}}return;
}
int lca(int x, int y) {if (dep[x] < dep[y]) swap(x, y);for (int i = 22; i >= 0; i--)if (dep[fa[x][i]] >= dep[y]) x = fa[x][i];if (x == y) return x;for (int i = 22; i >= 0; i--)if (fa[x][i] != fa[y][i]) x = fa[x][i], y = fa[y][i];return fa[x][0];
}
double val[N];
void dfs2(int u) {for (int i = 0; i < g[u].size(); i++) {int v = g[u][i];if (v == fa[u][0]) continue;dfs2(v);val[u] += val[v];}
}
int main() {cin >> n >> q;int u, v, w;for (int i = 2; i <= n; ++i) {cin >> u >> v;g[u].push_back(v);g[v].push_back(u);}fa[1][0] = 1;dfs(1);initLca();while (q--) {cin >> u >> v >> w;int l = lca(u, v);val[u] += log(w);val[v] += log(w);val[l] -= 2 * log(w);}dfs2(1);int ans = 0;for(int i = 2;i <= n;i ++){if(val[ans] < val[i]) ans = i;}cout << fa[ans][0] << ' ' << ans << '\n';return 0;
}
http://www.jsqmd.com/news/79265/

相关文章:

  • 【笔记】强连通分量
  • 告别信息传递繁琐步骤!批量查询+手机条形码一键发,1次搞定全传递
  • 视频剪辑软件电脑版排行榜,2025年度前十名软件推荐
  • 《追问者宪章》完整版
  • 重练算法(代码随想录版) day38 - 动态规划part6
  • 笑不活!男人假装爱你,7 个 “演技信号” 速查!
  • 1-Year XTOOL D9 Update Service: Latest Diagnostics for European/American Vehicles
  • 【笔记】最近公共祖先 Tarjan
  • Error occurred during initialization of VMCould not reserve enough space for object heap
  • 【算法题】滑动窗口(一)
  • 东芝与Quantum Corridor实现量子安全网络通信重大突破
  • 基于java的SpringBoot/SSM+Vue+uniapp的零工市场服务系统的详细设计和实现(源码+lw+部署文档+讲解等)
  • 为什么越来越多的IT技术人员转行网络安全?零基础入门到精通,收藏这一篇就够了
  • 甲骨文AI投资支出激增致股价创24年最大跌幅
  • 基于java的SpringBoot/SSM+Vue+uniapp的旅游出行指南系统的详细设计和实现(源码+lw+部署文档+讲解等)
  • HTTP协议在C#大文件上传中如何处理重试逻辑?
  • 转行IT最吃香的六大岗位:从零到精通,就业无忧!
  • 【笔记】基本数论
  • 19、将 Snort 规则转换为 iptables 规则
  • 计算计算机专业内卷严重,普通毕业生何去何从?​这个风口行业缺口炸了,现在入行正当时!
  • 【Java毕设全套源码+文档】于 SpringBoot的干洗店预约洗衣系统的设计与实现(丰富项目+远程调试+讲解+定制)
  • 23、深入解析 fwsnort 与 psad 的协同防御机制
  • 24、结合 psad 和 fwsnort 增强网络安全防护
  • 22、深入解析fwsnort:网络攻击检测与响应的利器
  • 【Java毕设全套源码+文档】基于 Web 的高校教师工作量管理系统设计与实现(丰富项目+远程调试+讲解+定制)
  • Qt Creator中pro文件添加外部动态库的方法
  • 芯祥联科技SNMP协议栈产品形态
  • 【笔记】状压 DP
  • 基于java的SpringBoot/SSM+Vue+uniapp的篮球管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
  • 【题解】Luogu P5905【模板】全源最短路(Johnson)