题目描述

一个序列a1,...,an是合法的,当且仅当:
长度为给定的n。
a1,...,an都是[1,A]中的整数。
a1,...,an互不相等。
一个序列的值定义为它里面所有数的乘积,即a1a2...an。
求所有不同合法序列的值的和。
两个序列不同当且仅当他们任意一位不一样。
输出答案对一个数mod取余的结果。

题解

先考虑dp

我们设dp[i][j]表示前i个元素,已经填完了1~j的所有数字,它们的价值和是多少。

转移:dp[i][j]=dp[i][j-1]+dp[i-1][j-1]*j

第一维比较小,但第二维比较大,所以需要优化。

然后考虑dp[n]是一个x次多项式。

观察转移的形式,dp[i][j]-dp[i][j-1]=dp[i-1][j-1]*j

前面的是一个差分的形式,多项式的次数会-1。

G[n]-1=G[n-1]+1

又因为G[0]=1,所以x=2n

所以可以先求出2*n+1项,再上拉格朗日插值。

代码

#include<iostream>
#include<cstdio>
#define N 1009
using namespace std;
typedef long long ll;
int n,m,q;
ll mod,a[N],f[N][N],A;
inline ll rd(){
ll x=;char c=getchar();bool f=;
while(!isdigit(c)){if(c=='-')f=;c=getchar();}
while(isdigit(c)){x=(x<<)+(x<<)+(c^);c=getchar();}
return f?-x:x;
}
inline ll power(ll x,ll y){
ll ans=;
while(y){
if(y&)ans=ans*x%mod;x=x*x%mod;y>>=;
}
return ans;
}
inline ll ni(ll x){return power(x,mod-);}
inline ll work(int x){
if(x<=m)return a[x];
ll ans=;
for(int i=;i<=m;++i){
ll res=a[i];
for(int j=;j<=m;++j){
if(j!=i)res=res*(x-j)%mod*ni(i-j)%mod;
}
res=(res+mod)%mod;
ans=(ans+res)%mod;
}
return ans;
}
int main(){
A=rd();n=rd();mod=rd();
m=n*+;
for(int i=;i<=m;++i)f[][i]=;
for(int i=;i<=n;++i)
for(int j=;j<=m;++j)f[i][j]=(f[i-][j-]*j%mod+f[i][j-])%mod;
for(int i=;i<=m;++i)a[i]=f[n][i];
ll ans=;
for(int i=;i<=n;++i)ans=ans*i%mod;
printf("%lld",ans*work(A)%mod);
return ;
}

BZOJ2655calc的更多相关文章

  1. bzoj2655calc 容斥+dp

    2655: calc Time Limit: 30 Sec  Memory Limit: 512 MBSubmit: 322  Solved: 197[Submit][Status][Discuss] ...

随机推荐

  1. 部署 apply plugin: 'realm-android'

    我在build.gradle中添加 apply plugin: 'realm-android' //依赖Realm数据库,插件化依赖  这个后,同步,清理,运行的时候报 应该在build.gradle ...

  2. Python安装第三方包(模块/工具)出现链接超时,网速慢,安装不上的问题如何解决

    之前我的电脑重新装了系统以后,发现安装完Python后, 使用pip linstall 安装第三方包的时候,网速慢的一匹 有时候只有几百b/s ,而且还动不动就会出现无法安装,链接超时等问题. 今天我 ...

  3. node.js解析微信消息推送xml格式加密的消息

    之前写过一个解密json格式加密的,我以为xml的和json的差不多,是上上个星期五吧,我的同事也是在做微信公众号里面的消息推送解密,发现好像只能使用xml加密格式的发送到服务器,我们去年也做过企业微 ...

  4. git错误--ssh: Could not resolve hostname ssh.github.com: Name or service not known--解决方式

    错误如下: git push origin ssh: Could not resolve hostname ssh.github.com: Name or service not known fata ...

  5. Go语言打造以太坊智能合约测试框架(level3)

    传送门: 柏链项目学院 第三课 智能合约自动化测试 之前课程回顾 我们之前介绍了go语言调用exec处理命令行,介绍了toml配置文件的处理,以及awk处理文本文件获得ABI信息.我们的代码算是完成了 ...

  6. 抽象,接口和Object类

    在面向对象的概念中, 所有的对象都是通过类来表述的, 但并不是所有的类都是用来描绘对象的, 如果一个类中么有包含足够的信息来描绘一类具体的对象, 这样的类就是抽象类. 抽象类往往用来表征对问题领域进行 ...

  7. robotFramework第二篇之关键字的定义和使用

    lesson.robot *** Keywords *** 打开谷歌浏览器并访问百度首页 Log 打开浏览器,输入http://www.baidu.com,进入百度首页 输入用户名 [Argument ...

  8. 记一次因为session引起的并发问题

    在做一个DSP系统(不要纠结这个系统是做什么的)时,碰到了一个很奇特的bug. 事情背景: 1.媒体方要求素材必须通过API提交给他们审核后,方可投放使用. 2.上线不久,运营反馈“每当提交素材的时候 ...

  9. KVM宿主机上虚拟机动态添加新磁盘

    (1)KVM宿主机查看运行的虚拟机 $ virsh list --all (2)将qcow2的磁盘移动到/var/lib/libvirt/images/,比如为centos.qcow2 (3)进入/e ...

  10. CRM销售人员针对的客户的权重分配的思想

    巧妙使用权重http://www.ziawang.com/article/52/ Django 项目CRM总结 - Pythia丶陌乐 - 博客园https://www.cnblogs.com/sup ...