这个题非常巧妙啊~

#include <bits/stdc++.h>
#define M 170
#define N 50003
#define mod 10007
#define LL long long
#define setIO(s) freopen(s".in","r",stdin)
using namespace std;
inline int qpow(int x,int y)
{
int tmp=1;
for(;y;y>>=1,x=1ll*x*x%mod) if(y&1) tmp=1ll*tmp*x%mod;
return tmp;
}
int n,edges,K;
int fac[N],inv[N],g[N][M],tmp[M],hd[N],to[N<<1],nex[N<<1],S[M][M],f[N][M];
inline void addedge(int u,int v) { nex[++edges]=hd[u],hd[u]=edges,to[edges]=v; }
void dfs1(int u,int ff)
{
f[u][0]=1;
for(int i=hd[u];i;i=nex[i])
{
int v=to[i]; if(v==ff) continue;
dfs1(v,u);
for(int j=0;j<=K;++j) f[u][j]=(f[u][j]+f[v][j])%mod;
for(int j=1;j<=K;++j) f[u][j]=(f[u][j]+f[v][j-1])%mod;
}
}
void dfs2(int u,int ff)
{
for(int j=0;j<=K;++j) g[u][j]=f[u][j];
if(ff)
{
for(int j=0;j<=K;++j) tmp[j]=g[ff][j];
for(int j=0;j<=K;++j) tmp[j]=(tmp[j]+mod-f[u][j])%mod;
for(int j=1;j<=K;++j) tmp[j]=(tmp[j]+mod-f[u][j-1])%mod;
for(int j=0;j<=K;++j) g[u][j]=(g[u][j]+tmp[j])%mod;
for(int j=1;j<=K;++j) g[u][j]=(g[u][j]+tmp[j-1])%mod;
}
for(int i=hd[u];i;i=nex[i]) if(to[i]!=ff) dfs2(to[i],u);
}
inline void Read()
{
int L,now,A,B,Q;
scanf("%d%d%d%d%d%d%d",&n,&K,&L,&now,&A,&B,&Q);
for(int i=1;i<n;i++)
{
now=(now*A+B)%Q;
int tmp=i<L?i:L;
int x=i-now%tmp,y=i+1;
addedge(x,y),addedge(y,x);
}
}
int main()
{
// setIO("input");
int i,j;
Read();
S[0][0]=fac[0]=1;
for(i=1;i<=K;++i) fac[i]=1ll*fac[i-1]*i%mod;
for(i=1;i<=K;++i) for(j=1;j<=i;++j) S[i][j]=(S[i-1][j-1]+1ll*j*S[i-1][j])%mod;
dfs1(1,0),dfs2(1,0);
for(i=1;i<=n;++i)
{
int ans=0;
for(j=0;j<=K;++j) ans=(ans+1ll*S[K][j]*fac[j]%mod*g[i][j]%mod)%mod;
printf("%d\n",ans);
}
return 0;
}

BZOJ 2159: Crash 的文明世界 第二类斯特林数+树形dp的更多相关文章

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

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

  2. bzoj 2159 Crash 的文明世界 && hdu 4625 JZPTREE ——第二类斯特林数+树形DP

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2159 学习材料:https://blog.csdn.net/litble/article/d ...

  3. BZOJ 2159: Crash 的文明世界(组合数学+第二类斯特林数+树形dp)

    传送门 解题思路 比较有意思的一道数学题.首先\(n*k^2\)的做法比较好想,就是维护一个\(x^i\)这种东西,然后转移的时候用二项式定理拆开转移.然后有一个比较有意思的结论就是把求\(x^i\) ...

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

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

  5. bzoj 2159 Crash 的文明世界 & hdu 4625 JZPTREE —— 第二类斯特林数+树形DP

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2159 使用公式:\( n^{k} = \sum\limits_{i=0}^{k} S(k,i ...

  6. BZOJ2159 Crash 的文明世界 【第二类斯特林数 + 树形dp】

    题目链接 BZOJ2159 题解 显然不能直接做点分之类的,观察式子中存在式子\(n^k\) 可以考虑到 \[n^k = \sum\limits_{i = 0} \begin{Bmatrix} k \ ...

  7. bzoj 2159: Crash 的文明世界

    Time Limit: 10 Sec  Memory Limit: 259 MB Submit: 480  Solved: 234[Submit][Status][Discuss] Descripti ...

  8. BZOJ.2159.Crash的文明世界(斯特林数 树形DP)

    BZOJ 洛谷 挺套路但并不难的一道题 \(Description\) 给定一棵\(n\)个点的树和\(K\),边权为\(1\).对于每个点\(x\),求\(S(x)=\sum_{i=1}^ndis( ...

  9. bzoj 4555 [Tjoi2016&Heoi2016]求和——NTT+第二类斯特林数

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4555 第二类斯特林数展开式: \( S(i,j) = \frac{1}{j!} \sum\l ...

随机推荐

  1. Android--Bitmap处理、圆角、圆形

    /** * 转换图片成圆形 * * @param bitmap * 传入Bitmap对象 * @return */ public static Bitmap toRoundBitmap(Bitmap ...

  2. 系统开启UAC情形下开机自启动程序如何以管理员权限启动

    系统开启UAC情形下开机自启动程序如何以管理员权限启动 题记:本文阐述的是在Windows系统开启UAC的情况下,开机自启动程序需要以管理员权限启动, 系统弹出UAC对话框,用户同意的情形下启动程序 ...

  3. Spring Cloud Alibaba学习笔记(16) - Spring Cloud Gateway 内置的路由谓词工厂

    Spring Cloud Gateway路由配置的两种形式 Spring Cloud Gateway的路由配置有两种形式,分别是路由到指定的URL以及路由到指定的微服务,在上文博客的示例中我们就已经使 ...

  4. CSS3 @font-face 规则

    指定名为"myFirstFont"的字体,并指定在哪里可以找到它的URL: @font-face { font-family: myFirstFont; src: url('San ...

  5. JSON省市区

    省: [ { "ProID": 1, "name": "北京市", "ProSort": 1, "ProRem ...

  6. Ubuntu 18.04 LTS版本 GIMP安装

    为何安装? GIMP全称GNU Image Manipulation Program,是Linux下的一款图片处理软件,功能基本完备,用户体验不错. 如何安装? 命令:sudo apt install ...

  7. 论PM与团队与敏捷开发

    敏捷开发是每个有追求的PM都会去读的书 敏捷开发是很少程序会去读的书 敏捷开发是团体其他人很少会读的书 然而, 据我的 所见, 所闻, 所论 敏捷开发在大家的脑袋里分为很多种版本 既有可以一辩的新鲜思 ...

  8. text-overflow 全兼容

    text-overflow 全兼容 text-overflow 这个CSS属性用于设置或检索是否使用一个省略标记(...)标示对象内文本的溢出.比起在后台用程序截断文本再附上省略标记的做法,用CSS来 ...

  9. HTML学习摘要3

    DAY 3 浏览器会自动地在标题的前后添加空行 默认情况下,HTML 会自动地在块级元素前后添加一个额外的空行,比如段落.标题元素前后. <hr /> 标签在 HTML 页面中创建水平线. ...

  10. C++ Win32 遍历窗口

    查找指定窗口 #include <iostream> #include <windows.h> using namespace std; int main() { TCHAR ...