树上查分学习笔记+做题记录

news/2025/3/16 14:13:57/文章来源:https://www.cnblogs.com/FrankWKD/p/18774847

树上查分

点的查分

  • 求路径 \(u-v\) 上的点被经过的次数.
  • \(cnt[x]\) 表示点 \(x\) 被经过的次数.
  • 核心代码:
cnt[u]++;
cnt[v]++;
cnt[lca(u,v)]--;
cnt[father[lca(u,v)]]--;

A. 运输压力

解法

树上查分板子题啊

#include <bits/stdc++.h>
using namespace std;
const int N = 5e4 + 20, L = 20;
int n, k, x, y, m;
int lg[N], fa[N][L], dep[N];
int pre[N], cnt[N], maxx;
struct node {int to, nxt;
} a[N << 1];
void add(int u, int v) {a[++k] = {v, pre[u]};pre[u] = k;
}
void dfs(int x, int fath) {dep[x] = dep[fath] + 1;fa[x][0] = fath;for (int i = pre[x]; i; i = a[i].nxt) {int to = a[i].to;if (to != fath) {dfs(to, x);}}
}
int lca(int u, int v) {if (dep[u] < dep[v])swap(u, v);while (dep[u] > dep[v]) {u = fa[u][lg[dep[u] - dep[v]]];}if (u == v)return u;for (int i = L - 1; i >= 0; i--) {if (fa[u][i] != fa[v][i]) {u = fa[u][i];v = fa[v][i];}}return fa[u][0];
}
void find_max(int x, int fath) {for (int i = pre[x]; i; i = a[i].nxt) {int to = a[i].to;if (to != fath) {find_max(to, x);cnt[x] += cnt[to];  // 从叶到根!}}if (maxx < cnt[x])maxx = cnt[x];
}
int main() {scanf("%d%d", &n, &m);for (int i = 1; i < n; i++) {scanf("%d%d", &x, &y);add(x, y);add(y, x);}dfs(1, 0);for (int i = 2; i <= n; i++) lg[i] = lg[i >> 1] + 1;for (int i = 1; i < L; i++) {for (int j = 1; j <= n; j++) {fa[j][i] = fa[fa[j][i - 1]][i - 1];}}while (m--) {scanf("%d%d", &x, &y);cnt[x]++;cnt[y]++;int lc = lca(x, y);cnt[lc]--;cnt[fa[lc][0]]--;}find_max(1, 0);printf("%d\n", maxx);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/899796.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ActAgent开发之基于http请求引用链路模版发起对话

下载deepeek 首先本地安装ollama,这是一款支持mac,windows和linus系统的大模型管理工具。下载好后打开终端,执行命令ollama pull deepseek-r1:7b,可以在网上找想要下载的开源大模型,我这里下载的是deepseek-r1的7b模型。执行完后可以用ollama list查看是否下载成功,然后可…

缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)

说在前面 在40岁老架构师 尼恩的读者交流群(50+)中,最近有小伙伴拿到了一线互联网企业如阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试资格,遇到很多很重要的redis一致性面试题,类似如下:如何保障 MySQL 和 Redis 的数据一致性? 如何保障 MySQL 和 Cache 的数据一…

牛逼,这款开源聊天应用竟能一键召唤多个AI助手,跨平台通话神器!

`JiwuChat`是一款基于Tauri2和Nuxt3构建的轻量化多平台即时通讯工具,仅约8MB体积却集成了**AI群聊机器人**、**WebRTC音视频通话**、**屏幕共享**等前沿功能。一套代码适配Windows/macOS/Linux/Android/iOS/Web六大平台,堪称开发者学习跨端开发的绝佳样板!嗨,大家好,我是小…

day29_正则三剑客--sed

关于学正则单个正则字符还认识组合到一起就晕了,怎么办?本质还是对单个字符没理解.认识*认识.*组合到就一起就蒙了,为什么?还是没想明白.的意义,*的意义正则表达式,从左向右,逐步理解单个字符的意义怎么做? 1.思维脑图写没写? 2.每一个正则表达式的符号,自己有没有动…

npm和yarn笔记

一、知识背景: npm和yarn都是node 的包管理工具,一开始yarn开发出来是为了解决npm的一些问题,比如早期的npm下载包只能串行执行,依赖嵌套等,但最新版本的npm其实和yarn的性能已经不相上下了,在2025年的今天按道理使用哪一个都行。 二、一些区别 三、常用命令功能描述npm …

设计一个由土壤电池供电的VR视觉体验

“拔掉资本主义”是一款由地球提供动力的虚拟现实体验,在这里,变成一棵树将你从生产力的需求中解放出来。“拔掉资本主义,扎根现实”是一种虚拟现实体验,由地球本身提供动力,利用土壤电池产生能量。当佩戴VR头显时,用户经历了数字化转型,成为一棵树或一棵植物,完全沉浸…

使用Arduino与Hexabitz单导联EXG监测模块(H2BR0)在绘图仪上绘制模拟信号

在这个项目中,我们将使用Arduino板与Hexabitz单导联EXG监测模块(H2BR0)一起在绘图仪上绘制模拟信号,以可视化ECG(心电图)和EMG(肌电图)等生物信号。部件: •Arduino Uno •连接电缆 •电极垫 •安装Arduino IDE的计算机 •单引脚,EXG监视器(H2BR0x): Hexabitz单导联EXG监测…

Object obserberd 用法

我是Eric,手机号是13522679763

基于Arduino的自平衡机器人设计

这是一个相对简单,视觉上有效的平衡机器人项目,只需要四个组件来制作。自平衡机器人是一种能使自身保持平衡而不致坠落到地面的装置。它的功能是利用车轮和车身的电机轴线运动来保持平衡。有几种类型的自平衡机器人,在这个特殊的情况下,我将向你展示一种制造两轮平衡机器人…

Scanner进阶学习

Scanner进阶使用hasNextInt(),hasNextFloat(),hasNextDouble()等方法,可用于判断输入数据的类型​ 例:判断输入的数据是否整数类型,或是否是浮点数类型 public static void main(String[] args) {Scanner scanner=new Scanner(System.in);int i=0;float f=0.0f;System…

第三周上课习题

TempConvert.py TempStr = input("请输入带有符号的温度值:") if TempStr[-1] in [F,f]: C = (eval(TempStr[0:-1]) - 32)/1.8 print("转换后的温度是C{:.2f}".format(C)) elif TempStr[-1] in [C, c]: F = 1.8*eval(TempStr[0:-1]) + 32 print("转换…