bzoj 2159 Crash的文明世界

2023-10-20 12:50
文章标签 世界 bzoj crash 文明 2159

本文主要是介绍bzoj 2159 Crash的文明世界,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目大意:

对每个点$x$ 求$\sum\limits_{i=1}^{n} {dis(i,j)}^k$

思路:

首先可以把式子展开得到$dis(i,j)^k=\sum\limits_{t=1}^k \binom{dis(i,j)}{t} S2(k,t)* t!$ ,$S2$为第二类斯特林数

因此对每个点 我们只需要求出$\sum\limits_{t=1}^k \sum\limits_{i=1}^n C_{dis(x,i)}^t $

而组合数有一个很好的性质$C(n,m)=C(n-1,m)+C(n-1,m-1)$

这样我们$dp$,$f(x,j)$表示子树内的$\sum C_{dis(x,v)}^j$按照组合数的性质很容易合并

然后我们再从上面继承其父亲子树外的点的与子树一样,考虑与它同级的其他点,用父亲的$f$减去之前用自己转移出的$fa$即可

即$g(x,i)+=f(fa,i)+f(fa,i-1)-f(x,i)-f(x,i-1)-f(x,i-1)-f(x,i-2)$

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cstdlib>
 5 #include<cmath>
 6 #include<algorithm>
 7 #include<queue>
 8 #include<vector>
 9 #include<map>
10 #include<set>
11 #define ll long long
12 #define db double
13 #define inf 2139062143
14 #define MAXN 50100
15 #define MOD 10007
16 #define rep(i,s,t) for(register int i=(s),i##__end=(t);i<=i##__end;++i)
17 #define dwn(i,s,t) for(register int i=(s),i##__end=(t);i>=i##__end;--i)
18 #define ren for(register int i=fst[x];i;i=nxt[i])
19 #define pb(i,x) vec[i].push_back(x)
20 #define pls(a,b) (a+b)%MOD
21 #define mns(a,b) ((a-(b))%MOD+MOD)%MOD
22 #define mul(a,b) (1LL*(a)*(b))%MOD
23 using namespace std;
24 inline int read()
25 {
26     int x=0,f=1;char ch=getchar();
27     while(!isdigit(ch)) {if(ch=='-') f=-1;ch=getchar();}
28     while(isdigit(ch)) {x=x*10+ch-'0';ch=getchar();}
29     return x*f;
30 }
31 int n,m,L,las,A,B,Q,nxt[MAXN<<1],to[MAXN<<1],fst[MAXN],cnt;
32 int s[155][155],fac[155],f[MAXN][155],g[MAXN][155];
33 void add(int u,int v){nxt[++cnt]=fst[u],fst[u]=cnt,to[cnt]=v;}
34 void dfs(int x,int pa)
35 {
36     f[x][0]=1;ren if(to[i]^pa) {dfs(to[i],x);
37         rep(j,0,m) f[x][j]=pls(f[x][j],f[to[i]][j]+(j?f[to[i]][j-1]:0));}
38 }
39 void Dfs(int x,int pa)
40 {
41     g[x][0]=n-f[x][0];rep(i,1,m) g[x][i]=mns(g[pa][i]+g[pa][i-1]+f[pa][i]+f[pa][i-1],
42         f[x][i]+f[x][i-1]*2+(i>1?f[x][i-2]:0));
43     ren if(to[i]^pa) Dfs(to[i],x);
44 }
45 int main()
46 {
47     n=read(),m=read(),L=read(),las=read(),A=read(),B=read(),Q=read();int a,b,x;
48     rep(i,2,n) las=(las*A+B)%Q,a=i-1-las%min(i-1,L),b=i,add(a,b),add(b,a);
49     s[1][1]=fac[1]=1;dfs(1,0);x=1;ren Dfs(to[i],x);int ans=0;
50     rep(i,2,m) {rep(j,1,i) s[i][j]=pls(s[i-1][j-1],j*s[i-1][j]);fac[i]=mul(fac[i-1],i);}
51     rep(i,1,n)
52     {
53         ans=0;rep(j,1,m) ans=pls(ans,mul(mul(fac[j],s[m][j]),f[i][j]+g[i][j]));
54         printf("%d\n",ans);
55     }
56 }
View Code

 

转载于:https://www.cnblogs.com/yyc-jack-0920/p/10648478.html

这篇关于bzoj 2159 Crash的文明世界的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/247203

相关文章

揭秘世界上那些同时横跨两大洲的国家

我们在《世界人口过亿的一级行政区分布》盘点全球是那些人口过亿的一级行政区。 现在我们介绍五个横跨两州的国家,并整理七大洲和这些国家的KML矢量数据分析分享给大家,如果你需要这些数据,请在文末查看领取方式。 世界上横跨两大洲的国家 地球被分为七个大洲分别是亚洲、欧洲、北美洲、南美洲、非洲、大洋洲和南极洲。 七大洲示意图 其中,南极洲是无人居住的大陆,而其他六个大洲则孕育了众多国家和

HDU 2159 二维完全背包

FATE 最近xhd正在玩一款叫做FATE的游戏,为了得到极品装备,xhd在不停的杀怪做任务。久而久之xhd开始对杀怪产生的厌恶感,但又不得不通过杀怪来升完这最后一级。现在的问题是,xhd升掉最后一级还需n的经验值,xhd还留有m的忍耐度,每杀一个怪xhd会得到相应的经验,并减掉相应的忍耐度。当忍耐度降到0或者0以下时,xhd就不会玩这游戏。xhd还说了他最多只杀s只怪。请问他能

简单的Q-learning|小明的一维世界(3)

简单的Q-learning|小明的一维世界(1) 简单的Q-learning|小明的一维世界(2) 一维的加速度世界 这个世界,小明只能控制自己的加速度,并且只能对加速度进行如下三种操作:增加1、减少1、或者不变。所以行动空间为: { u 1 = − 1 , u 2 = 0 , u 3 = 1 } \{u_1=-1, u_2=0, u_3=1\} {u1​=−1,u2​=0,u3​=1}

简单的Q-learning|小明的一维世界(2)

上篇介绍了小明的一维世界模型 、Q-learning的状态空间、行动空间、奖励函数、Q-table、Q table更新公式、以及从Q值导出策略的公式等。最后给出最简单的一维位置世界的Q-learning例子,从给出其状态空间、行动空间、以及稠密与稀疏两种奖励函数的设置方式。下面将继续深入,GO! 一维的速度世界 这个世界,小明只能控制自己的速度,并且只能对速度进行如下三种操作:增加1、减

【Linux】萌新看过来!一篇文章带你走进Linux世界

🚀个人主页:奋斗的小羊 🚀所属专栏:Linux 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 前言💥1、初识Linux💥1.1 什么是操作系统?💥1.2 各种操作系统对比💥1.3 现代Linux应用💥1.4 Linux常用版本 💥2、Linux 和 Windows 目录结构对比💥2.1 文件系统组织方式💥2.2

Elasticsearch:无状态世界中的数据安全

作者:来自 Elastic Henning Andersen 在最近的博客文章中,我们宣布了支持 Elastic Cloud Serverless 产品的无状态架构。通过将持久性保证和复制卸载到对象存储(例如 Amazon S3),我们获得了许多优势和简化。 从历史上看,Elasticsearch 依靠本地磁盘持久性来确保数据安全并处理陈旧或孤立的节点。在本博客中,我们将讨论无状态的数据持

【AI大模型应用开发】2.1 Function Calling连接外部世界 - 入门与实战(1)

Function Calling是大模型连接外部世界的通道,目前出现的插件(Plugins )、OpenAI的Actions、各个大模型平台中出现的tools工具集,其实都是Function Calling的范畴。时下大火的OpenAI的GPTs,原理就是使用了Function Calling,例如联网检索、code interpreter。 本文带大家了解下Function calling,看

005:VTK世界坐标系中的相机和物体

VTK医学图像处理---世界坐标系中的相机和物体 左侧是成像结果                                                    右侧是世界坐标系中的相机与被观察物体 目录 VTK医学图像处理---世界坐标系中的相机和物体 简介 1 在三维空间中添加坐标系 2 世界坐标系中的相机 3 世界坐标系中vtkImageData的参数 总结:

深入RabbitMQ世界:探索3种队列、4种交换机、7大工作模式及常见概念

文章目录 文章导图RabbitMQ架构及相关概念四大核心概念名词解读 七大工作模式及四大交换机类型0、前置了解-默认交换机DirectExchange1、简单模式(Simple Queue)-默认DirectExchange2、 工作队列模式(Work Queues)-默认DirectExchange3、发布/订阅模式(Publish/Subscribe)-FanoutExchange4、路

攻防世界 unseping

unseping 攻防世界web新手练习 -unseping_攻防世界web新手题unseping-CSDN博客 这道题对我来说还是有点难,什么oct绕过命令执行第一次遇到捏,所以基本是跟着别人的wp写的,一点点记录吧 先对源码进行分析 <?phphighlight_file(__FILE__);//定义了一个ease类class ease{private $method;privat