[HDU4625] JZPTREE+[国家集训队] Crash 的文明世界 题解
老师发福利,放了两道一毛一样的题。
考虑无视战术,直接化简:
\]
\]
\]
\]
\]
为什么要进行最后一步分解呢?这和接下来的推导有关系。
实际上推到这里已经不用再推了,我们只需要能求出 \(f_{u,i}=\sum\limits_{v=1}^n\binom{dis(u,v)}i\) 就可以了。考虑换根 \(dp\)。
首先显然有:
\]
对于 \(i>0\) 的情况,我们可以使用最后一步的推导。考虑最后一步 \(dis(u,v)-1\) 相当于是把问题转化到了儿子上,即:
\]
换根 \(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 的文明世界 题解的更多相关文章
- [国家集训队] Crash 的文明世界(第二类斯特林数)
题目 [国家集训队] Crash 的文明世界 前置 斯特林数\(\Longrightarrow\)斯特林数及反演总结 做法 \[\begin{aligned} ans_x&=\sum\limi ...
- [国家集训队] 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 ...
- 洛谷P4827 [国家集训队] Crash 的文明世界 [斯特林数,组合数,DP]
传送门 思路 又见到这个\(k\)次方啦!按照套路,我们将它搞成斯特林数: \[ ans_x=\sum_{i=0}^k i!S(k,i)\sum_y {dis(x,y) \choose i} \] 前 ...
- P4827 [国家集训队] Crash 的文明世界
传送门:洛谷 题目大意:设$$S(i)=\sum_{j=1}^ndis(i,j)^k$$,求$S(1),S(2),\ldots,S(n)$. 数据范围:$n\leq 50000,k\leq 150$ ...
- 解题:国家集训队 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\)思想 ...
- P4827 [国家集训队] Crash 的文明世界(第二类斯特林数+树形dp)
传送门 对于点\(u\),所求为\[\sum_{i=1}^ndis(i,u)^k\] 把后面那堆东西化成第二类斯特林数,有\[\sum_{i=1}^n\sum_{j=0}^kS(k,j)\times ...
- 国家集训队 Crash 的文明世界(第二类斯特林数+换根dp)
题意 题目链接:https://www.luogu.org/problem/P4827 给定一棵 \(n\) 个节点的树和一个常数 \(k\) ,对于树上的每一个节点 \(i\) ,求出 \( ...
- 洛谷 P4827 [国家集训队] Crash 的文明世界
题目描述 给你一棵 n 个点的树,对于树上的每个节点 i,求 \(\sum_{j=1}^ndis(i,j)^k\).其中 \(dis(i,j)\) 为两点在树上的距离. 输入格式 第一行两个整 ...
随机推荐
- Java基础 —— 集合(二)
Collection 接口 Collection接口常用方法 boolean add(E e):在集合末尾添加元素 boolean remove(Object o):若集合中存在与o相同的元素,则删除 ...
- django数据库反向迁移
目录 django数据库反向迁移 步骤一:连接MySQL 方式一:使用pymysql连接 方式二:使用mysqlclient连接 步骤二:迁移数据库 正向迁移(通过类创建表) 反向迁移(通过表创建类) ...
- 【MyBatis】学习笔记04:配置文件模板
[Mybatis]学习笔记01:连接数据库,实现增删改 [Mybatis]学习笔记02:实现简单的查 [MyBatis]学习笔记03:配置文件进一步解读(非常重要) 目录 IDEA配置模板的地方 核心 ...
- 实现一个分布式调用(OkHttp+SpringBoot)
很多情况,trace是分布在不同的应用中的,最常用的远程调用方式就是Http. 在这种情况下,我们通常通过增加额外的Http Header传递Trace信息,然后将其组织起来. 本部分通过构建一个目前 ...
- Qt编写视频监控系统78-视频推流到流媒体服务器
一.前言 视频推流作为独立的模块,目前并没有集成到视频监控系统中,目前是可以搭配监控系统一起使用,一般是将添加好的摄像头通道视频流地址打开后,读取视频流重新推到流媒体服务器,然后第三方可以从流媒体服务 ...
- Error: Assertion failed (nimages > 0) in cv::calibrateCameraRO, file D:\opencv4\opencv\opencv-4.1.0\modules\calib3d\src\calibration.cpp, line 3691
报错信息: Error: Assertion failed (nimages > 0) in cv::calibrateCameraRO, file D:\opencv4\opencv\open ...
- vue+element项目部署到线上,所有icon图标不显示,解决方案
build里边utils.js加publicPath if (options.extract) { return ExtractTextPlugin.extract({ use: loaders, f ...
- 在 .NET 中使用 Tesseract 识别图片文字
1. 什么是 Tesseract Tesseract 是一个强大的字符识别 (OCR) 工具.它最初由 HP 发布,现在由 Google 和学术社区共同维护和开发. Tesseract 支持多种语言和 ...
- CDS标准视图:维护通知活动信息 I_MaintNotificationActyData
视图名称:维护通知活动信息 I_MaintNotificationActyData 视图类型:基础 视图代码: 点击查看代码 @AbapCatalog.sqlViewName: 'INOTIFACTY ...
- 最新AI智能体开发案例:Coze工作流必备神器!教你用Coze平台搭建「扣子工作流生成神器」智能体!
点击 疯狂老包 > 点击右上角"···" > 关注我 各位小伙伴们,大家好呀!我是疯狂老包.我精心打造的<疯狂AI智能体开发:100个实战案例, 从 入门到精通 ...