正题

题目大意:https://www.luogu.org/problem/P4427


题目大意

一棵树,每次给一条路径,求路径上每个点的深度的kkk次方的和。


解题思路

路径上分成两条深度连续的链,所以我们可以先预处理出kkk次方的前缀和。

然后LCALCALCA就好了。


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#define S(l,r,k) ((sum[k][r]-sum[k][l-1]+XJQ)%XJQ)
#define ll long long
using namespace std;
const ll N=310000,XJQ=998244353;
struct node{ll to,next;
}a[2*N];
ll n,m,tot,ls[N],dep[N],f[N][21],sum[51][N];
queue<int> q;
void addl(ll x,ll y)
{a[++tot].to=y;a[tot].next=ls[x];ls[x]=tot;
}
void bfs()
{q.push(1);dep[1]=1;while(!q.empty()){ll x=q.front();q.pop();for(ll i=ls[x];i;i=a[i].next){ll y=a[i].to;if(dep[y]) continue;dep[y]=dep[x]+1;f[y][0]=x;q.push(y);}}for(ll i=1;i<=20;i++)for(ll j=1;j<=n;j++)f[j][i]=f[f[j][i-1]][i-1];
}
ll LCA(ll x,ll y,ll k)
{ll X=dep[x]-1,Y=dep[y]-1;if(dep[x]<dep[y])swap(x,y);for(ll i=20;i>=0;i--)if(dep[f[x][i]]>=dep[y])x=f[x][i];if(x!=y){for(ll i=20;i>=0;i--)if(f[x][i]!=f[y][i])x=f[x][i],y=f[y][i];x=f[x][0];y=f[y][0];}return (S(dep[x]-1,X,k)+S(dep[y]-1,Y,k)-S(dep[x]-1,dep[x]-1,k)+XJQ)%XJQ;
}
int main()
{scanf("%lld",&n);for(ll i=1;i<n;i++){ll x,y;scanf("%lld%lld",&x,&y);addl(x,y);addl(y,x);}for(ll i=1;i<=n;i++){sum[1][i]=i;for(ll j=2;j<=50;j++)sum[j][i]=sum[j-1][i]*i%XJQ;for(ll j=1;j<=50;j++)(sum[j][i]+=sum[j][i-1])%=XJQ; }scanf("%lld",&m);bfs();while(m--){ll x,y,k;scanf("%lld%lld%lld",&x,&y,&k);printf("%lld\n",LCA(x,y,k));}
}

P4427-[BJOI2018]求和【LCA】相关推荐

  1. BZOJ 5293 求和(LCA)

    5293: [Bjoi2018]求和 Time Limit: 20 Sec  Memory Limit: 512 MB Submit: 203  Solved: 128 [Submit][Status ...

  2. LCA+差分【p4427】[BJOI2018]求和

    Description master 对树上的求和非常感兴趣.他生成了一棵有根树,并且希望多次询问这棵树上一段路径上所有节点深度的\(k\) 次方和,而且每次的\(k\) 可能是不同的.此处节点深度的 ...

  3. BJOI 2018 题解

    [BJOI2018]求和 可以预处理每一个 k 的答案,树上差分减一下即可 [BJOI2018]治疗之雨 单独写:传送门 [BJOI2018]链上二次求和 枚举 l e n len len, a n ...

  4. yyb省选前的一些计划

    突然意识到有一些题目的计划,才可以减少大量查水表或者找题目的时间. 所以我决定这样子处理. 按照这个链接慢慢做. 当然不可能只做省选题了. 需要适时候夹杂一些其他的题目. 比如\(agc/arc/cf ...

  5. 洛谷P4458 /loj#2512.[BJOI2018]链上二次求和(线段树)

    题面 传送门(loj) 传送门(洛谷) 题解 我果然是人傻常数大的典型啊-- 题解在这儿 //minamoto #include<bits/stdc++.h> #define R regi ...

  6. BJOI2018简要题解

    BJOI2018简要题解 D1T1 二进制 题意 pupil 发现对于一个十进制数,无论怎么将其的数字重新排列,均不影响其是不是 \(3\) 的倍数.他想研究对于二进制,是否也有类似的性质. 于是他生 ...

  7. Uber提出损失变化分配方法LCA,揭秘神经网络“黑盒”

    作者 | Janice Lan,Rosanne Liu等 译者 | 清儿爸 责编 | 夕颜 出品 | AI科技大本营(ID: rgznai100) [导读]神经网络(Neural networks,N ...

  8. 模板 - LCA最近公共祖先(倍增法、Tarjan、树上差分、LCA优化的次小生成树)

    整理的算法模板合集: ACM模板 注意x和y的LCA可以是x或者y本身 一.LCA的在线倍增算法 /*给定一棵包含 n个节点的有根无向树,有 m个询问,每个询问 给出了一对节点的编号 x和 y,询问 ...

  9. BZOJ 3626: [LNOI2014]LCA

    3626: [LNOI2014]LCA Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 2074  Solved: 828 [Submit][Stat ...

最新文章

  1. 解读 | 2019年10篇计算机视觉精选论文(上)
  2. php 分类标签推荐,MySQL / PHP:通过标签/分类法查找类似/相关的项目
  3. Git的stash操作
  4. Windows Server 2003 Clustering 服务
  5. AMESim R14 运行时出现许可证错误
  6. linux数据块的大小不一样,HDFS块大小默认为什么是64MB(或者是128MB)
  7. 如何linux查看mysql目录下日志_测试人员如何在linux服务器中查询mysql日志?
  8. 把Windows上的文件拷贝到AWS Linux系统上
  9. 如何在 .NETCore 中修改 QueryString ?
  10. 【机器学习-数据科学】第三节:数据分析实例 分析MovieLens电影数据
  11. directdraw显示yuv视频,出现屏保时,yuv显示不出来,表面丢失
  12. 大学计算机 学生成绩表格,学生成绩分析系统的设计与实现
  13. codewars033: Duplicate Encoder 重复编码器
  14. excel 日期格式 mysql_EXCEL和MySQL日期格式之间的转换
  15. mssql2000跟mssql2005共享问题
  16. 百度api翻译html,帮助文档首页
  17. 中文写代码?开始不信后来用中文写了剧情小游戏!嗯,真香~
  18. 电脑计算机D盘红格式化不了,电脑D盘无法格式化提示Windows无法格式该驱动器的解决办法...
  19. 关于flex布局中,父元素高度auto,由一子元素撑开,另一子元素自适应高度问题
  20. chromel浏览器老是提示adobe flash player已过期

热门文章

  1. java判断时间区间 隔天_Java初中级程序员面试题宝典
  2. vc 控制台添加托盘显示_开源:ESP8266读DHT11温湿度,小程序实时显示
  3. 华为服务器如何用pe重装系统,教你华为u盘重装win10系统详细图文
  4. linux脚本 逻辑运算,Linux-shell-逻辑运算和;
  5. php cbd架构,CBD模式
  6. android动画送礼物,Android仿直播类app赠送礼物功能
  7. ssd windows未能启动服务器,ssd安装win10无法启动你安装方法对吗?来看一下
  8. HTML坐标不随着屏幕大小改变,HTML热区map坐标,随窗口大小自适应办法(javascript)...
  9. mysql安装目录centos_CentOS mysql安装系统方法
  10. python字符串设置字体_python怎么更改字符串后几位