老师发福利,放了两道一毛一样的题。


考虑无视战术,直接化简:

\[\sum_{v=1}^ndis(u,v)^k=\sum_{v=1}^n\sum_{i=0}^k\begin{Bmatrix}k\\i\end{Bmatrix}dis(u,v)^\underline i
\]
\[=\sum_{i=0}^k\begin{Bmatrix}k\\i\end{Bmatrix}\sum_{v=1}^ndis(u,v)^\underline i
\]
\[=\sum_{i=0}^k\begin{Bmatrix}k\\i\end{Bmatrix}\sum_{v=1}^ni!\binom{dis(u,v)}i
\]
\[=\sum_{i=0}^k\begin{Bmatrix}k\\i\end{Bmatrix}i!\sum_{v=1}^n\binom{dis(u,v)}i
\]
\[=\sum_{i=0}^k\begin{Bmatrix}k\\i\end{Bmatrix}i!\sum_{v=1}^n\binom{dis(u,v)-1}i+\binom{dis(u,v)-1}{i-1}
\]

为什么要进行最后一步分解呢?这和接下来的推导有关系。

实际上推到这里已经不用再推了,我们只需要能求出 \(f_{u,i}=\sum\limits_{v=1}^n\binom{dis(u,v)}i\) 就可以了。考虑换根 \(dp\)。

首先显然有:

\[f_{u,0}=1+\sum_{v\in son(u)}f_{v,0}
\]

对于 \(i>0\) 的情况,我们可以使用最后一步的推导。考虑最后一步 \(dis(u,v)-1\) 相当于是把问题转化到了儿子上,即:

\[f_{u,i}=\sum_{v\in son(u)}f_{v,i-1}+f_{v,i}
\]

换根 \(dp\),时间复杂度 \(O(nk)\)。

#include<bits/stdc++.h>
using namespace std;
const int N=155,M=50005,p=10007;
int str[N][N],f[M][N],g[M][N],ans;
vector<int>ve[M];int n,k,l,nw,aa,bb,q;
void dfs1(int x,int fa){
for(auto y:ve[x]){
if(y==fa) continue;dfs1(y,x);
f[x][0]=(f[x][0]+f[y][0])%p;
for(int i=1;i<=k;i++)
f[x][i]=(f[x][i]+f[y][i]+f[y][i-1])%p;
}f[x][0]++;
}void dfs2(int x,int fa){
if(x!=1){
for(int i=1;i<=k;i++){
g[x][i]+=g[fa][i]+g[fa][i-1]+f[fa][i];
g[x][i]+=f[fa][i-1]-f[x][i]-2*f[x][i-1];
if(i>1) g[x][i]-=f[x][i-2];g[x][i]%=p;
}g[x][0]=(g[fa][0]+f[fa][0]-f[x][0]+p)%p;
}for(auto y:ve[x])
if(y!=fa) dfs2(y,x);
}int main(){
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
cin>>n>>k>>l>>nw>>aa>>bb>>q,str[0][0]=1;
for(int i=1;i<n;i++){
nw=(nw*aa+bb)%q;
int tmp=(i<l?i:l);
int x=i-nw%tmp,y=i+1;
ve[x].push_back(y);
ve[y].push_back(x);
}for(int i=1;i<=k;i++) for(int j=1;j<=i;j++)
str[i][j]=(str[i-1][j-1]+str[i-1][j]*j)%p;
dfs1(1,0),dfs2(1,0);
for(int j=1;j<=n;j++,ans=0){
for(int i=0,jc=1;i<=k;i++,jc=jc*i%p){
int now=str[k][i]*jc%p;
ans=(ans+now*(f[j][i]+g[j][i]))%p;
}cout<<(ans+p)%p<<"\n";
}return 0;
}

[HDU4625] JZPTREE+[国家集训队] Crash 的文明世界 题解的更多相关文章

  1. [国家集训队] Crash 的文明世界(第二类斯特林数)

    题目 [国家集训队] Crash 的文明世界 前置 斯特林数\(\Longrightarrow\)斯特林数及反演总结 做法 \[\begin{aligned} ans_x&=\sum\limi ...

  2. [国家集训队] Crash的文明世界

    Description 给定一棵 \(n\) 个点的树,对于每个点 \(i\) 求 \(S(i)=\sum\limits_{j=1}^n \operatorname{dist(i,j)}^k\) .\ ...

  3. [国家集训队] Crash 的文明世界

    不错的树形$ DP$的题 可为什么我自带大常数啊$ cry$ 链接:here 题意:给定一棵$ n$个节点的树,边权为$ 1$,对于每个点$ x$求$ \sum\limits_{i=1}^n dist ...

  4. 洛谷P4827 [国家集训队] Crash 的文明世界 [斯特林数,组合数,DP]

    传送门 思路 又见到这个\(k\)次方啦!按照套路,我们将它搞成斯特林数: \[ ans_x=\sum_{i=0}^k i!S(k,i)\sum_y {dis(x,y) \choose i} \] 前 ...

  5. P4827 [国家集训队] Crash 的文明世界

    传送门:洛谷 题目大意:设$$S(i)=\sum_{j=1}^ndis(i,j)^k$$,求$S(1),S(2),\ldots,S(n)$. 数据范围:$n\leq 50000,k\leq 150$ ...

  6. 解题:国家集训队 Crash 的文明世界

    题面 这种套着高次幂的统计问题一般都要用到第二类斯特林数和自然数幂的关系:$a^k=\sum\limits_{i=0}^{k}S_k^iC_a^i*i!$ 那么对于每个点$x$有: $ans_x=\s ...

  7. 【[国家集训队] Crash 的文明世界】

    先写一个五十分的思路吧 首先这道题有一个弱化版 [POI2008]STA-Station 相当于\(k=1\),于是就是一个非常简单的树形\(dp\)的\(up\ \ and\ \ down\)思想 ...

  8. P4827 [国家集训队] Crash 的文明世界(第二类斯特林数+树形dp)

    传送门 对于点\(u\),所求为\[\sum_{i=1}^ndis(i,u)^k\] 把后面那堆东西化成第二类斯特林数,有\[\sum_{i=1}^n\sum_{j=0}^kS(k,j)\times ...

  9. 国家集训队 Crash 的文明世界(第二类斯特林数+换根dp)

    题意 ​ 题目链接:https://www.luogu.org/problem/P4827 ​ 给定一棵 \(n\) 个节点的树和一个常数 \(k\) ,对于树上的每一个节点 \(i\) ,求出 \( ...

  10. 洛谷 P4827 [国家集训队] Crash 的文明世界

    题目描述 ​ 给你一棵 n 个点的树,对于树上的每个节点 i,求 \(\sum_{j=1}^ndis(i,j)^k\).其中 \(dis(i,j)\) 为两点在树上的距离. 输入格式 ​ 第一行两个整 ...

随机推荐

  1. Ant Design Pro项目Popover位置微调

    前情 公司有经常需要做一些后台管理页面,我们选择了Ant Design Pro,它是基于 Ant Design 和 umi 的封装的一整套企业级中后台前端/设计解决方案. 产品效果图 最新接到的一个后 ...

  2. Python 潮流周刊#81:在个人电脑上运行 GPT-4 级别的大模型(摘要)

    本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...

  3. k8s强制删除pod节点

    场景 突然get pod的时候,发现一堆的错误,得把它干掉,否则很不爽. 解决方案 正常过期的状态,比如Evicted ,用正常指令 kubectl -n jingu get pods | grep ...

  4. 第 5 章 Debian 系统中可用的软件

    目录 5.1. Debian GNU/Linux 收录了哪些类型的应用程序和开发工具? 5.2. 谁编写了所有这些软件? 5.3. 我应该如何获得一份 Debian 打包的程序的最新列表? 5.4. ...

  5. 关于Java的UUID

    UUID或者UNID或者UID,是一个统一唯一标识,可以用来标记文档.数据或其它需要唯一标识的东西.Java 5.0内置UUID的实现,见java.util.UUID. 下面代码是找到的2种实现方式, ...

  6. Qt音视频开发17-vlc内核回调拿图片进行绘制

    一.前言 在众多播放器中,支持的种类格式众多,并支持DVD影音光盘,VCD影音光盘及各类流式协议,提供了sdk进行开发,这点是至关重要的,尽管很多优秀的播放器很牛逼,由于没有提供sdk第三方开发,少了 ...

  7. Qt编写的项目作品5-物联网管理平台

    一.功能特点 1 软件模块 设备监控模块,包括数据监控(表格形式展示).设备面板(面板形式展示).地图监控(地图形式展示).曲线监控(曲线形式展示). 数据查询模块,包括报警记录.运行记录.操作记录. ...

  8. 痞子衡嵌入式:MCUXpresso for VS Code开发环境搭建及SDK工程导入

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso for VS Code开发环境搭建及SDK工程导入. MCUXpresso IDE(包括其前身 LPCXpress ...

  9. Supermap Objects API开发中禁用默认的选择集显示风格,启用自定义的显示风格的代码

    //#region 使用自定义风格设置选中状态 Selection selection = new Selection();//从该记录集获取选择集 selection.FromRecordset(r ...

  10. STK V11.2 64位下载及视频

    1.AGI Systems Tool Kit (STK) 11.2 64位+含补丁激活教程:下载地址 2.STK视频学习资料(一):下载地址