尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

P3258 [JLOI2014] 松鼠的新家

P3258 [JLOI2014] 松鼠的新家
📅 发布时间:2026/6/19 20:26:14

P3258 [JLOI2014] 松鼠的新家

大意

给多次修改,\(u, v\),每次将 \(u \to v\) 的路径上的点权加 \(1\),求最终每个点的点权值。

思路

显然树上差分。

定义 \(d_i\) 表示从 \(i\) 到根的路径上点权和,那么 \(u \to v\) 就只需要 \(d_u\) 和 \(d_v\) 处加 \(1\),然后在 \(d_{lca(u, v)}\) 和 \(d_{fa_{lca(u,v)}}\) 处减 \(1\),最后将差分数组求前缀和就是原数组。

代码

#include<iostream>
using namespace std;const int MAXN = 3 * 1e5 + 5;
struct node{int to,next;
}e[MAXN * 2];int f[MAXN][20],dp[MAXN];
int a[MAXN];
int h[MAXN * 2],tot = 0;
int n,k,ans = -1;
int diff[MAXN];void add(int x,int y){e[++ tot] = {y,h[x]};h[x] = tot;
}
void dfs(int u,int fa){dp[u] = dp[fa] + 1;f[u][0] = fa;for(int i = 1;(1 << i) <= dp[u];i ++){f[u][i] = f[f[u][i - 1]][i - 1];}for(int i = h[u];i;i = e[i].next){int v = e[i].to;if(v != fa) dfs(v,u);}return;
}void dfs2(int u,int fa){for(int i = h[u];i;i = e[i].next){int v = e[i].to;if(v == fa) continue;dfs2(v,u);diff[u] += diff[v];}
}int LCA(int x,int y){if(dp[x] < dp[y]) swap(x,y);for(int i = 19;i >= 0;i --){if(dp[x] - (1 << i) >= dp[y]){x = f[x][i];}}if(x == y) return x;for(int i = 19;i >= 0;i --){if(f[x][i] != f[y][i]){x = f[x][i],y = f[y][i];}}return f[x][0];
}
int main(){cin >> n;for(int i = 1;i <= n;i ++) cin >> a[i];for(int u,v,i = 1;i <= n - 1;i ++){cin >> u >> v;add(u,v); add(v,u);}dfs(1,0);for(int u,v,i = 2;i <= n;i ++){u = a[i - 1],v = a[i];int l = LCA(u,v);diff[u] ++;diff[v] ++;diff[l] --;diff[f[l][0]] --;}dfs2(1,0);for(int i = 2;i <= n;i ++){diff[a[i]] --;}for(int i = 1;i <= n;i ++){cout << diff[i] << '\n';}return 0;
}

本文来自一名高中生,作者:To_Carpe_Diem

相关新闻

  • K8S 中使用 YAML 安装 ECK
  • 23、深入解析 fwsnort 与 psad 的协同防御机制
  • 光伏板太阳能充电MATLAB仿真探索

最新新闻

  • purl.js片段解析实战:处理hash路由和URL锚点参数
  • CANN/asc-devkit SIMD矢量标量比较API
  • 方法耗时计算 + 匿名内部类 - -z-w-h
  • Upscayl图像放大终极指南:从模糊到高清的AI魔法解密
  • ComfyUI-KJNodes:5步掌握AI工作流效率跃升的核心技术
  • 如何安装BlockParty广告拦截器?iOS与macOS平台的快速上手教程

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号