题目描述

一个序列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. Excel自动换行、Export2Excel 自动换行

    1需求:导出excel后自动换行显示. 2插件:Export2Excel 3.测试 listToExcel() { import('@/vendor/Export2Excel').then(excel ...

  2. spring2.0 mybatis JDBC配置

    mybatis 搭建 <!--连接池--> <dependency> <groupId>org.springframework.boot</groupId&g ...

  3. spring cloud feign 文件上传和文件下载

    文件上传参考文档:http://blog.didispace.com/spring-cloud-starter-dalston-2-4/ 文件下载参考文档:https://blog.csdn.net/ ...

  4. javascript面向对象习题答案

    第二章 1.如果我们在控制台中执行下列语句,结果分别是什么?为什么? var a; typeof a; undefined > var s = '1s'; s++; NaN > !!&qu ...

  5. Python查找指定文件

    在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出相对路径: import os testfiles = [] testfilepaths = [] L = len(os.p ...

  6. google zxing android扫描优化&解析

    这里先给出zxing包的源码地址 zip包:https://codeload.github.com/zxing/zxing/zip/master Github:https://github.com/z ...

  7. Android 视频通信,低延时解决方案

    背景: 由于,项目需要,需要进行视频通信,把a的画面,转给b. 运维部署: APP1:编码摄像头采集的数据,并且发送数据到服务端 APP2:从服务端,拉取数据,并且进行解码显示 服务端:接收APP1提 ...

  8. Jmeter简单回顾

    之前公众号推文一上手就分享如何测接口, 其实忽略了一些概念性的东西, 今天来给大家拾遗补缺, 做个回顾吧. 一. JMeter介绍 jmeter能做什么,来自官网的解释: Ability to loa ...

  9. Vtiger CRM 几处SQL注入漏洞分析,测试工程师可借鉴

    本文由云+社区发表 0x00 前言 干白盒审计有小半年了,大部分是业务上的代码,逻辑的复杂度和功能模块结构都比较简单,干久了收获也就一般,有机会接触一个成熟的产品(vtiger CRM)进行白盒审计, ...

  10. css之overflow应用

    overflow应用的两个小例子: 1.单行文本出现省略号的情况 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional// ...