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

D58 树的直径 树上前缀和 P2971 [USACO10HOL] Cow Politics G

 

 

A09【模板】树上前缀和 P4427 [BJOI2018] 求和 - 董晓 - 博客园

P2971 [USACO10HOL] Cow Politics G - 洛谷

给了一颗 n 个节点 边权为 1 的有根树,给了 k 种颜色,树的每个节点已染色。输出同种颜色的节点之间的最远距离。

思路

k 组颜色,询问 k 个最远距离。题目多次询问树上一些路径是权值和,就要考虑树上前缀和了。

每组颜色一定有一个最深的点是最远距离的端点。我们在预处理每个节点深度的时候,顺便记录一下与该点同色的最深点

我们枚举每个点 x,对应同色的最深点 y,用 dep[x]+dep[y]-2*dep[lca(x,y)] 更新答案。

// 树上前缀和 O(nlogn)
#include<bits/stdc++.h>
using namespace std;#define N 200005
int h[N],to[N<<1],ne[N<<1],idx;
void add(int u,int v){to[++idx]=v,ne[idx]=h[u],h[u]=idx;}int n,k,rt,a[N],p[N];
int fa[N][21],dep[N],mxd[N],point[N],ans[N];void dfs(int x,int f){dep[x]=dep[f]+1; fa[x][0]=f;for(int i=1;i<=20;i++)fa[x][i]=fa[fa[x][i-1]][i-1];if(mxd[a[x]]<dep[x]) mxd[a[x]]=dep[x],point[a[x]]=x; //记录同种颜色最深的点  for(int i=h[x];i;i=ne[i]){int y=to[i];if(y!=f) dfs(y,x);}
}
int lca(int x,int y){if(dep[x]<dep[y]) swap(x,y); //让x更深for(int i=20;~i;i--)if(dep[fa[x][i]]>=dep[y]) x=fa[x][i]; //x向上跳到y的同一层if(x==y) return x;for(int i=20;~i;i--)if(fa[x][i]!=fa[y][i]) x=fa[x][i],y=fa[y][i]; //一起向上跳return fa[x][0];
}
signed main(){scanf("%d%d",&n,&k);for(int i=1;i<=n;++i){scanf("%d%d",&a[i],&p[i]); //颜色,父亲if(p[i]==0) rt=i;else add(i,p[i]),add(p[i],i);}dfs(rt,0); //倍增预处理 dep,fa,point 数组for(int x=1,y;x<=n;++x){y=point[a[x]];ans[a[x]]=max(ans[a[x]],dep[x]+dep[y]-2*dep[lca(x,y)]); //树上前缀和
  } for(int i=1;i<=k;++i) printf("%d\n",ans[i]);
}

 

http://www.jsqmd.com/news/334690/

相关文章:

  • 多回路问题
  • 课程论文还在 “凑字混及格”?虎贲等考 AI 让 8 小时搞定 90+,期末不卷也能赢
  • loongarch ethercat
  • 科研绘图告别 “技术内卷”!虎贲等考 AI:让数据可视化成为论文 “加分王牌”
  • 学术 PPT 告别 “无效加班”!虎贲等考 AI:10 分钟生成答辩级演示神器
  • 威胁识别(上)
  • Linux内核驱动--U-Boot、内核加载与 rootfs 挂载
  • 开题报告反复被打回?虎贲等考 AI 让研究 “落地可行”,评审秒点头
  • 2026年郑州混合机厂家最新推荐:双锥、干粉、粉末、三维、预拌粉、粉体、固体饮料混合机、郑州华德福筑牢工业混合品质新基准 - 海棠依旧大
  • 2026年郑州混合生产线厂家最新推荐:粉末、双锥、干粉、预拌粉、添加剂、粉体混合生产线、聚焦企业服务品质与产品竞争力深度剖析 - 海棠依旧大
  • C++课后习题训练记录Day89
  • 多工况车速数据集训练LSTM神经网络用于车速预测,输出未来多个时间步车速,MATLAB代码
  • 联机手写签名识别技术:通过深度学习和动态行为分析,为银行信贷业务提供高安全性身份认证方案
  • 从概念到实战:达普韦伯DApp开发案例,助力企业构建可信数据空间
  • 投稿核心期刊总被拒?虎贲等考 AI:用 “学术合规 + 智能赋能” 解锁见刊密码
  • 写论文软件哪个好?100 + 跨专业实测:虎贲等考 AI 凭 “全流程合规 + 硬核支撑” 夺冠
  • <span class=“js_title_inner“>从激光雷达到“手眼协同”:速腾聚创在光谷AI峰会详解如何拥抱物理AI浪潮</span>
  • 9 款 AI 写论文哪个好?深度实测后:虎贲等考 AI 凭 “真文献 + 实数据” 封神!
  • UG NX 对象信息(查询)
  • 数学导数学习教案
  • 虎贲等考 AI:破解 “查重红 + AI 痕” 双困局,学术优化不靠 “文字魔术” 靠逻辑
  • 蓝桥杯JAVA--启蒙之路(十)class版本 模块
  • 拆开“超节点”的伪装:没有内存统一编址,仍是服务器堆叠
  • 【毕业设计】基于ssm的房屋中介公司网站的设计与实现(源码+文档+远程调试,全bao定制等)
  • Rockylinux8 利用rpmbuild把nginx-module-vts模块编译进nginx/1.22.1
  • TDSQL
  • lsblk -a磁盘上的新空间如何扩容加到磁盘上
  • Flutter for OpenHarmony 渐变色生成器:从 HSL 调色到代码一键复制的完整实践
  • 数学式子 - Xue-Zhoujun
  • Nginx源代码学习:为什么Nginx能处理百万并发?从112行源码看延迟事件队列的精妙设计