【BZOJ5339】[TJOI2018]教科书般的亵渎(斯特林数)

题面

BZOJ

洛谷

题解

显然交亵渎的次数是\(m+1\)。

那么这题的本质就是让你求\(\sum_{i=1}^n i^{m+1}\),中间再减掉几项直接暴力就行了。

所以只要考虑求这个东西。

比如说斯特林数?

\[m^n=\sum_{i=0}^{n}{m\choose i}i!\begin{Bmatrix}n\\i\end{Bmatrix}
\]

那么

\[\begin{aligned}
\sum_{i=1}^n i^m&=\sum_{i=1}^n\sum_{j=0}^m {i\choose j}j!\begin{Bmatrix}m\\j\end{Bmatrix}\\
&=\sum_{j=0}^m j!\begin{Bmatrix}m\\j\end{Bmatrix}\sum_{i=1}^n{i\choose j}\\
&=\sum_{j=0}^m j!\begin{Bmatrix}m\\j\end{Bmatrix}{n+1\choose j+1}\\
&=\sum_{j=0}^m \begin{Bmatrix}m\\j\end{Bmatrix}\frac{(n+1)^{\underline {j+1}}}{j+1}
\end{aligned}\]

这样子可以做到\(O(m^2)\)。

斯特林数直接\(O(m^2)\)暴力预处理即可。

讲个笑话,这题我long long都没开就过了。

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
#define MOD 1000000007
#define ll long long
inline ll read()
{
ll x=0;bool t=false;char ch=getchar();
while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();
if(ch=='-')t=true,ch=getchar();
while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();
return t?-x:x;
}
int fpow(int a,int b){int s=1;while(b){if(b&1)s=1ll*s*a%MOD;a=1ll*a*a%MOD;b>>=1;}return s;}
int S[60][60];
int Calc(int n,int m)
{
int ret=0;n+=1;
for(int j=0;j<=m;++j)
{
int s=1;for(int k=0;k<=j;++k)s=1ll*s*(n-k+MOD)%MOD;
ret=(ret+1ll*S[m][j]*s%MOD*fpow(j+1,MOD-2))%MOD;
}
return ret;
}
ll n,a[55];int m;
int main()
{
S[0][0]=1;
for(int i=1;i<=55;++i)
for(int j=1;j<=i;++j)
S[i][j]=(1ll*S[i-1][j]*j+S[i-1][j-1])%MOD;
int T=read();
while(T--)
{
n=read();m=read();for(int i=1;i<=m;++i)a[i]=read();
sort(&a[1],&a[m+1]);int ans=0;
for(int i=0;i<=m;++i)
{
ans=(ans+Calc((n-a[i])%MOD,m+1))%MOD;
for(int j=i+1;j<=m;++j)ans=(ans+MOD-fpow((a[j]-a[i])%MOD,m+1))%MOD;
}
printf("%d\n",ans);
}
return 0;
}

【BZOJ5339】[TJOI2018]教科书般的亵渎(斯特林数)的更多相关文章

  1. [BZOJ5339] [TJOI2018]教科书般的亵渎

    题目链接 BZOJ题面. 洛谷题面. Solution 随便推一推,可以发现瓶颈在求\(\sum_{i=1}^n i^k\),关于这个可以看看拉格朗日插值法. 复杂度\(O(Tm^2)\). #inc ...

  2. 洛谷 P4593 [TJOI2018]教科书般的亵渎

    洛谷 P4593 [TJOI2018]教科书般的亵渎 神仙伯努利数...网上一堆关于伯努利数的东西但是没有证明,所以只好记结论了? 题目本质要求\(\sum_{i=1}^{n}i^k\) 伯努利数,\ ...

  3. 【bzoj5339】[TJOI2018]教科书般的亵渎(拉格朗日插值/第二类斯特林数)

    传送门 题意: 一开始有很多怪兽,每个怪兽的血量在\(1\)到\(n\)之间且各不相同,\(n\leq 10^{13}\). 然后有\(m\)种没有出现的血量,\(m\leq 50\). 现在有个人可 ...

  4. Luogu P4593 [TJOI2018]教科书般的亵渎

    亵渎终于离开标准了,然而铺场快攻也变少了 给一个大力枚举(无任何性质)+艹出自然数幂和的方法,但是复杂度极限是\(O(k^4)\)的,不过跑的好快233 首先简单数学分析可以得出\(k=m+1\),因 ...

  5. BZOJ5339:[TJOI2018]教科书般的亵渎——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=5339 https://www.luogu.org/problemnew/show/P4593 小豆 ...

  6. 并不对劲的复健训练-bzoj5339:loj2578:p4593:[TJOI2018]教科书般的亵渎

    题目大意 题目链接 题解 先将\(a\)排序. \(k\)看上去等于怪的血量连续段的个数,但是要注意当存在\(a_i+1=a_{i+1}\)时,虽然它们之间的连续段为空,但是还要算上:而当\(a_m= ...

  7. BZOJ.5339.[TJOI2018]教科书般的亵渎(拉格朗日插值) & 拉格朗日插值学习笔记

    BZOJ 洛谷 题意的一点说明: \(k\)次方这个\(k\)是固定的,也就是最初需要多少张亵渎,每次不会改变: 因某个怪物死亡引发的亵渎不会计分. 不难发现当前所需的张数是空格数+1,即\(m+1\ ...

  8. [TJOI2018]教科书般的亵渎

    嘟嘟嘟 题面挺迷的,拿第一个样例说一下: 放第一次亵渎,对答案产生了\(\sum_{i = 1} ^ {10} i ^ {m + 1} - 5 ^ {m + 1}\)的贡献,第二次亵渎产生了\(\su ...

  9. P4593 [TJOI2018]教科书般的亵渎(拉格朗日插值)

    传送门 首先所有亵渎的张数\(k=m+1\),我们考虑每一次使用亵渎,都是一堆\(i^k\)之和减去那几个没有出现过的\(j^k\),对于没有出现过的我们可以直接快速幂处理并减去,所以现在的问题就是如 ...

随机推荐

  1. Bootstrap知识记录:表格和按钮

    基本格式.table3.带边框的表格//给表格增加边框<table class="table table-bordered">4.悬停鼠标//让<tbody> ...

  2. pl/sql实现打印九九乘法表

    学习PL/SQL循环的时候写的,记录一下. declare v_number1 ); -- 外层循环变量 v_number2 ); -- 内层循环变量 begin .. -- 开始外层循环 loop ...

  3. 6-1 Quantifiers

    1 Quantifiers are used to describe the number or amount of something. Certain quantifiers are used w ...

  4. apache benchmark 的简单安装与测试

    1. 下载apache benchmark Copy From https://blog.csdn.net/fyqaccpt96/article/details/43272001 yum instal ...

  5. 【学亮开讲】Oracle内外连接查询20181119

    --内连接查询 --需求:查询显示业主编号.业主名称.业主类型名称 select os.id 业主编号,os.name 业主名称,ot.name 业主类型名称 from t_owners os,t_o ...

  6. 转《vue引入第三方js库》

    一.绝对路径直接引入,全局可用 二.绝对路径直接引入,配置后,import 引入后再使用 三.webpack中配置 alias,import 引入后再使用 四.webpack 中配置 plugins, ...

  7. Linux 的相关操作

    切换权限   在linux环境下,用户之前的切换使用 “su - name,若要切换到root下面,则使用sudo su 命令即可. 在linux下安装软件,经常就是装完后不知道装到哪里去了 (201 ...

  8. If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.

    学习Spring Boot 过程中遇到了下列这个问题 Description: Failed to configure a DataSource: 'url' attribute is not spe ...

  9. 使用Guava cache构建本地缓存

    前言 最近在一个项目中需要用到本地缓存,在网上调研后,发现谷歌的Guva提供的cache模块非常的不错.简单易上手的api:灵活强大的功能,再加上谷歌这块金字招牌,让我毫不犹豫的选择了它.仅以此博客记 ...

  10. java sort排序原理

    事实上Collections.sort方法底层就是调用的Arrays.sort方法,而Arrays.sort使用了两种排序方法,快速排序和优化的归并排序. 快速排序主要是对那些基本类型数据(int,s ...