博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVALive 5061 Lightning Energy Report --LCA
阅读量:4356 次
发布时间:2019-06-07

本文共 784 字,大约阅读时间需要 2 分钟。

题意:给一棵树,每次给u到v的路径上所有点加上一个值,最后输出每个点的权值(初始为0)

解法:每次在u,v间加k时,只要让u,v点的权值加上k,u,v的LCA处减去k(因为LCA的子树中加了两个k),再在LCA的父亲(如果有的话)减k,免除对上面的影响。最后dfs一遍,ans[u] += ans[v] (v是u的所有儿子)即可。

这里LCA用RMQ求的。

代码:

#include 
#include
#include
#include
#include
#include
#include
using namespace std;#define N 100107int fa[N],ans[N];vector
G[N];int ati[N],f[N],bn,b[N],dp[N][32],ind;void dfs(int u,int fa) { for(int i=0;i
ati[b]) swap(a,b); return f[RMQ(ati[a],ati[b])];}int main(){ int t,cs = 1,i,n,m,u,v,k; scanf("%d",&t); while(t--) { init(); memset(G,0,sizeof(G)); memset(ans,0,sizeof(ans)); scanf("%d",&n); for(i=0;i
View Code

 

转载于:https://www.cnblogs.com/whatbeg/p/4231392.html

你可能感兴趣的文章
Python3.x:抢票
查看>>
前端三大主流框架的对比React、Vue、Angular 所谓是是三分天下
查看>>
SLAM入门之视觉里程计(6):相机标定 张正友经典标定法详解
查看>>
从开发消费者变成开发生产服务者
查看>>
玩转html5(三)---智能表单(form),使排版更加方便
查看>>
JavaSE-17 泛型
查看>>
net core静态文件 访问除默认目录文件配置
查看>>
mysql—数据库优化——如何选择合适的索引
查看>>
数据库基础
查看>>
百度地图API示例之添加自定义控件
查看>>
计时器
查看>>
Spring学习笔记——Spring MVC表单控制器(SimpleFormController)
查看>>
c++学习笔记之函数重载和模板理解
查看>>
完美世界笔试题-递增子序列B-最长递增子序列打印
查看>>
ImageView实现适屏和裁剪图片功能
查看>>
iOS开发--1.对runtime的理解和整理
查看>>
清除浮动 -- 具有兼容性
查看>>
CF778D Parquet Re-laying 构造
查看>>
SpringMVC如何接收application/json内容编码类型的参数?
查看>>
【推荐系统】neural_collaborative_filtering(源码解析)
查看>>