P4827 [国家集训队] Crash 的文明世界
传送门:洛谷
题目大意:设$$S(i)=\sum_{j=1}^ndis(i,j)^k$$,求$S(1),S(2),\ldots,S(n)$。
数据范围:$n\leq 50000,k\leq 150$
这道题,看见$k$次方和就直接上斯特林数。
$$S(x)=\sum_{i=0}^ki!S(k,i)\sum_{y=1}^nC_{dis(x,y)}^i$$
然后我们考虑求最后一项。
设$$up_{x,t}=\sum_{y\notin x}C_{dis(x,y)}^t,dn_{x,t}=\sum_{y\in x}C_{dis(x,y)}^t$$
我们先考虑$dn$。
$$dn_{x,t}=\sum_{(x,v)}\sum_{y\in v}C_{dis(v,y)+1}^t$$
$$=\sum_{(x,v)}\sum_{y\in v}(C_{dis(v,y)}^t+C_{dis(v,y)}^{t-1})$$
$$=\sum_{(x,v)}(dn_{v,t}+dn_{v,t-1})$$
然后考虑$up$
$$up_{x,t}=\sum_{v\notin fa}C_{dis(v,fa)+1}^t+\sum_{v\in fa}C_{dis(v,fa)+1}^t-\sum_{v\in x}C_{dis(v,x)+2}^t$$
$$=up_{fa,t}+up_{fa,t-1}+dn_{fa,t}+dn_{fa,t-1}-dn_{x,t}-2dn_{x,t-1}-dn_{x,t-2}$$
其中$up_{1,t}=0$
然后把式子直接输进去就可以了。
#include<cstdio>
#define Rint register int
using namespace std;
const int N = , K = , mod = ;
int n, k, head[N], to[N << ], nxt[N << ], S[K][K], fac[K];
inline void add(int a, int b){
static int cnt = ;
to[++ cnt] = b; nxt[cnt] = head[a]; head[a] = cnt;
}
int dn[N][K], up[N][K];
inline void dfs1(int x, int f){
dn[x][] = ;
for(Rint i = head[x];i;i = nxt[i])
if(to[i] != f){
dfs1(to[i], x);
dn[x][] = (dn[x][] + dn[to[i]][]) % mod;
for(Rint t = ;t <= k;t ++)
dn[x][t] = (dn[to[i]][t] + dn[to[i]][t - ] + dn[x][t]) % mod;
}
}
inline void dfs2(int x, int f){
for(Rint i = head[x];i;i = nxt[i])
if(to[i] != f){
up[to[i]][] = (up[x][] + dn[x][] - dn[to[i]][] + mod) % mod;
up[to[i]][] = (up[x][] + up[x][] + dn[x][] + dn[x][] - dn[to[i]][] - * dn[to[i]][] + * mod) % mod;
for(Rint t = ;t <= k;t ++)
up[to[i]][t] = (up[x][t] + up[x][t - ] + dn[x][t] + dn[x][t - ] - dn[to[i]][t] - * dn[to[i]][t - ] - dn[to[i]][t - ] + * mod) % mod;
dfs2(to[i], x);
}
}
int main(){
scanf("%d%d", &n, &k);
S[][] = ;
for(Rint i = ;i <= k;i ++)
for(Rint j = ;j <= k;j ++)
S[i][j] = (S[i - ][j - ] + S[i - ][j] * j) % mod;
fac[] = ;
for(Rint i = ;i <= k;i ++) fac[i] = i * fac[i - ] % mod;
for(Rint i = ;i < n;i ++){
int a, b;
scanf("%d%d", &a, &b);
add(a, b); add(b, a);
}
dfs1(, ); dfs2(, );
for(Rint x = ;x <= n;x ++){
int ans = ;
for(Rint i = ;i <= k;i ++)
ans = (ans + fac[i] * S[k][i] % mod * (up[x][i] + dn[x][i]) % mod) % mod;
printf("%d\n", ans);
}
}
P4827 [国家集训队] Crash 的文明世界的更多相关文章
- 洛谷P4827 [国家集训队] Crash 的文明世界 [斯特林数,组合数,DP]
传送门 思路 又见到这个\(k\)次方啦!按照套路,我们将它搞成斯特林数: \[ ans_x=\sum_{i=0}^k i!S(k,i)\sum_y {dis(x,y) \choose i} \] 前 ...
- P4827 [国家集训队] Crash 的文明世界(第二类斯特林数+树形dp)
传送门 对于点\(u\),所求为\[\sum_{i=1}^ndis(i,u)^k\] 把后面那堆东西化成第二类斯特林数,有\[\sum_{i=1}^n\sum_{j=0}^kS(k,j)\times ...
- 洛谷 P4827 [国家集训队] Crash 的文明世界
题目描述 给你一棵 n 个点的树,对于树上的每个节点 i,求 \(\sum_{j=1}^ndis(i,j)^k\).其中 \(dis(i,j)\) 为两点在树上的距离. 输入格式 第一行两个整 ...
- [国家集训队] Crash 的文明世界(第二类斯特林数)
题目 [国家集训队] Crash 的文明世界 前置 斯特林数\(\Longrightarrow\)斯特林数及反演总结 做法 \[\begin{aligned} ans_x&=\sum\limi ...
- 国家集训队 Crash 的文明世界(第二类斯特林数+换根dp)
题意 题目链接:https://www.luogu.org/problem/P4827 给定一棵 \(n\) 个节点的树和一个常数 \(k\) ,对于树上的每一个节点 \(i\) ,求出 \( ...
- [国家集训队] Crash的文明世界
Description 给定一棵 \(n\) 个点的树,对于每个点 \(i\) 求 \(S(i)=\sum\limits_{j=1}^n \operatorname{dist(i,j)}^k\) .\ ...
- [国家集训队] Crash 的文明世界
不错的树形$ DP$的题 可为什么我自带大常数啊$ cry$ 链接:here 题意:给定一棵$ n$个节点的树,边权为$ 1$,对于每个点$ x$求$ \sum\limits_{i=1}^n dist ...
- 解题:国家集训队 Crash 的文明世界
题面 这种套着高次幂的统计问题一般都要用到第二类斯特林数和自然数幂的关系:$a^k=\sum\limits_{i=0}^{k}S_k^iC_a^i*i!$ 那么对于每个点$x$有: $ans_x=\s ...
- 【[国家集训队] Crash 的文明世界】
先写一个五十分的思路吧 首先这道题有一个弱化版 [POI2008]STA-Station 相当于\(k=1\),于是就是一个非常简单的树形\(dp\)的\(up\ \ and\ \ down\)思想 ...
随机推荐
- 3D点云的深度学习
使用卷积神经网络(CNN)架构的深度学习(DL)现在是解决图像分类任务的标准解决方法.但是将此用于处理3D数据时,问题变得更加复杂.首先,可以使用各种结构来表示3D数据,所述结构包括: 1 体素网格 ...
- 第三百九十二节,Django+Xadmin打造上线标准的在线教育平台—sql注入攻击,xss攻击,csrf攻击
第三百九十二节,Django+Xadmin打造上线标准的在线教育平台—sql注入攻击,xss攻击,csrf攻击 sql注入攻击 也就是黑客通过表单提交的地方,在表单里输入了sql语句,就是通过SQL语 ...
- 磨刀不误砍柴工——统一日志系统 Log4Net/ExceptionLess
本文版权归博客园和作者吴双本人共同所有,转载和爬虫必须注明原文地址:www.cnblogs.com/tdws . 一. 写在前面 本文Log4Net介绍了基础的方式,大数据量生产环境不能使用,中等 ...
- Unity3D中Layers和LayerMask解析
Unity中是用int32来表示32个Layer层.int32表示二进制一共有32位(0—31).在Unity中可编辑的Layer如下图所示: 在Unity中每个GameObject都有Layer ...
- Make ProgressBar Vertical
Create a drawable in your Drawable folder called vertical_progress_bar.xml: <?xml version="1 ...
- 【CF944G】Coins Exhibition DP+队列
[CF944G]Coins Exhibition 题意:Jack去年参加了一个珍稀硬币的展览会.Jack记得一共有 $k$ 枚硬币,这些硬币排成一行,从左到右标号为 $1$ 到 $k$ ,每枚硬币是正 ...
- Web(一)
Tomcat 服务器 B/S 浏览器/服务器 C/S 客户端/服务器 URI :大 广 /项目名 URL: 小 http://lo ...
- Android新手系列教程(申明:来源于网络)
Android新手系列教程(申明:来源于网络) 地址:http://blog.csdn.net/column/details/androidcoder666.html
- TOP100summit:【分享实录-WalmartLabs】利用开源大数据技术构建WMX广告效益分析平台
本篇文章内容来自2016年TOP100summitWalmartLabs实验室广告平台首席工程师.架构师粟迪夫的案例分享. 编辑:Cynthia 粟迪夫:WalmartLabs实验室广告平台首席工程师 ...
- Luogu 1603 - 斯诺登的密码 - [简单字符串操作]
题目链接:https://www.luogu.org/problemnew/show/P1603 题目背景 根据斯诺登事件出的一道水题 题目描述 2013年X月X日,俄罗斯办理了斯诺登的护照,于是他混 ...