https://www.luogu.org/problemnew/show/P4427

因为这个题,我交了整整两页...

题目不难,预处理+lca

一个奇坑点:预处理sum的时候,你是不能取模的,因为有可能取模之后sum值变小,而实际上不是,由于你后一步还要做减法

因此就会出锅,导致我爆零一整页正确做法是最后取模,虽然我也不知道为什么这样不会爆炸,300000 * 998244353这都死哪儿去了...

真是血一般的教训啊,取模不能乱取

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<climits>
#include<vector>
#include<cstdlib>
#include<ctime>
#include<queue>
using namespace std;
#define mod 998244353
#define maxn 300000 + 10
typedef long long ll;
inline ll read()
{ll ans = 0,op = 1;char ch = getchar();while(ch < '0' || ch > '9'){if(ch == '-') op = -1;ch = getchar();}while(ch >= '0' && ch <= '9'){(ans *= 10) += ch - '0';ch = getchar();}return ans * op;
}
ll power(ll a,ll b)
{ll ans = 1,res = a;while(b){if(b & 1)(ans *= res) %= mod;(res *= res) %= mod;b = b >> 1;}return ans % mod;
}
struct edge
{ll to,next;
}e[maxn << 1];
ll fir[maxn],alloc;
void adde(ll u,ll v)
{e[++alloc].next = fir[u];fir[u] = alloc;e[alloc].to = v;swap(u,v);e[++alloc].next = fir[u];fir[u] = alloc;e[alloc].to = v;
}
ll sum[maxn][60];
ll dep[maxn],f[maxn][31];
void dfs(ll u,ll fa)
{dep[u] = dep[fa] + 1;f[u][0] = fa;for(int i = 1;i <= 50;i++)sum[u][i] = sum[fa][i] + power(dep[u],i);for(int i = 1;i <= 20;i++)f[u][i] = f[f[u][i - 1]][i - 1];for(int i = fir[u];i;i = e[i].next){ll v = e[i].to;if(v == fa) continue;dfs(v,u);}
}
ll lca(ll x,ll y)
{if(dep[x] < dep[y]) swap(x,y);for(int i = 19;i >= 0;i--){if(dep[f[x][i]] >= dep[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];
}
ll n,m;
int main()
{n = read();for(int i = 1;i <= n - 1;i++){ll u = read(),v = read();adde(u,v);}dep[0] = -1; dfs(1,0); m = read();for(int i = 1;i <= m;i++){ll u = read(),v = read(),k = read();ll to = lca(u,v);printf("%lld\n" , ((sum[u][k] + sum[v][k]) - (sum[to][k] + sum[f[to][0]][k])) % mod);}
}

 

转载于:https://www.cnblogs.com/LM-LBG/p/10343580.html

BJOI 2012 求和相关推荐

  1. BZOJ 2660 (BJOI 2012) 最多的方案

    Description 第二关和很出名的斐波那契数列有关,地球上的OIer都知道:F1=1, F2=2, Fi = Fi-1 + Fi-2,每一项都可以称为斐波那契数.现在给一个正整数N,它可以写成一 ...

  2. LeetCode 2012. 数组美丽值求和

    文章目录 1. 题目 2. 解题 1. 题目 给你一个下标从 0 开始的整数数组 nums .对于每个下标 i(1 <= i <= nums.length - 2),nums[i] 的 美 ...

  3. 使用 SQL Server 2012 Analysis Services Tabular Mode 表格建模 图文教程

    原文 http://www.cnblogs.com/biwork/archive/2013/05/22/3093896.html BI Work 使用 SQL Server 2012 Analysis ...

  4. scau 2012新生赛 G只有神知道的世界

    数论水题,但是因为自己数论比较弱,而且这题也想了半个小时,所以还放上来 题意: 对于任意一个非负数N,我们定义D(N) 为N上奇数数字的和加上两倍偶数数字的和.举个例子:D(567) = 5 + 6 ...

  5. 报表中利用隐藏列对扩展格显示值求和

    在润乾报表中,获取报表中单元格显示值的函数是disp(),然而这个函数却无法计算扩展单元格的显示值.从而无法直接对扩展个显示值求和. 在下图中,需要计算D3单元格的显示值之和. D3值为:ds1.再订 ...

  6. [C] 跨平台使用Intrinsic函数范例3——使用MMX、SSE2指令集 处理 32位整数数组求和...

    作者:zyl910. 本文面对对SSE等SIMD指令集有一定基础的读者,以32位整数数组求和为例演示了如何跨平台使用MMX.SSE2指令集.支持vc.gcc编译器,在Windows.Linux.Mac ...

  7. [C] 跨平台使用Intrinsic函数范例1——使用SSE、AVX指令集 处理 单精度浮点数组求和(支持vc、gcc,兼容Windows、Linux、Mac)...

    作者:zyl910. 本文面对对SSE等SIMD指令集有一定基础的读者,以单精度浮点数组求和为例演示了如何跨平台使用SSE.AVX指令集.因使用了stdint.zintrin.ccpuid这三个模块, ...

  8. xmu 1254.异或求和

    1254.异或求和 Time Limit: 1000 MS         Memory Limit: 65536 K Total Submissions: 52 (19 users)         ...

  9. sqlyog表添加列_如何用数据透视表求差,而不是求和?

    如图 8‑43中上图所示为某商店2012年第一季度的商品销售明细表,如何利用数据透视表快速统计各商品销量与上个月的差异如图 8‑43中下图所示? 图8‑43销售报表 1.解决方案 创建数据透视表,设置 ...

最新文章

  1. 笔试算法题(58):二分查找树性能分析(Binary Search Tree Performance Analysis)
  2. linux 挂载u盘
  3. 深度学习中各激活函数的优缺点
  4. MIPI DSI协议介绍
  5. CSDN论坛上的一道算法题
  6. laravel 获取最后一条sql的小函数
  7. RK 3399 切换以太网卡
  8. VB禁用CTRL +ALT + DEL(1)
  9. 多元高斯分布的边缘概率和条件概率
  10. Word和WPS插件开发总结
  11. 计算机软件企业的税收,2018年软件企业增值税税收政策梳理
  12. 硬件基础:嵌入式软件可靠性设计要注意的问题
  13. 移动OA办公系统为企业带来便捷办公
  14. 黑苹果MAC好处与坏处
  15. CZ880到手第一天测试,安装Windows11 To Go
  16. 蓝牙如何进行广播和扫描
  17. 统信 UOS 连接 Windows 共享打印机
  18. c语言用迭代法求最大公约数,用迭代法求两个数的最大公约数和最小公倍数
  19. android10 p20pro,客观数据告诉你华为p20 pro的拍照到底什么水平
  20. 名编辑电子杂志大师教程 | 名编辑电子杂志大师软件简介

热门文章

  1. Linux网络DNS配置反向解析与构建主从域名服务器
  2. 各大型邮箱smtp服务器及端口收集:
  3. MiniGUI编程之Helloworld(一)
  4. word2vec模型评估_【新书】从Word2Vec到BERT的自然语言处理嵌入进展,附下载
  5. oracle表空间可以迁移,Oracle 表空间迁移
  6. linux父设备,linux 设备模型---学习记录(二)
  7. golang 热插拨 插件_从零开始实现一个插件化框架(一)
  8. 批量生成数组_JavaScript【重温基础】13.迭代器和生成器
  9. 全局对象_C++全局变量初始化
  10. python源码只有编译成二进制_Python源码包和二进制包(包含打包过程细节讲解)...