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


神仙伯努利数。。。网上一堆关于伯努利数的东西但是没有证明,所以只好记结论了?

题目本质要求\(\sum_{i=1}^{n}i^k\)

伯努利数,\(B_0=1,B_i=-\frac{\sum_{j=0}^{i-1}C_{n+1}^jB_j}{i+1}(i>0)\)

就这玩意(什么鬼)。。。

然后就神仙的有\(\sum_{i=1}^{n}i^k=\frac{\sum_{i=1}^{k+1}C_{k+1}^{i}B_{k+1-i}(n+1)^{i}}{k+1}\)了?

不会证啊QAQ

#include<bits/stdc++.h>
#define il inline
#define vd void
#define mod 1000000007
typedef long long ll;
il ll gi(){
ll x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-')f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
return x*f;
}
il ll pow(ll x,ll y){
ll ret=1;
while(y){
if(y&1)ret=ret*x%mod;
x=x*x%mod;y>>=1;
}
return ret;
}
ll k,a[101],B[101],C[101][101],inv[101];
il ll query(ll x){
ll ret=0;
for(int i=1;i<=k+1;++i)ret+=C[k+1][i]*B[k+1-i]%mod*pow((x+1)%mod,i)%mod;
return ret%mod*inv[k+1]%mod;
}
int main(){
#ifndef ONLINE_JUDGE
freopen("4593.in","r",stdin);
freopen("4593.out","w",stdout);
#endif
ll T=gi(),n,m;
C[0][0]=1;
for(int i=1;i<101;++i){
C[i][0]=1;
for(int j=1;j<=i;++j)C[i][j]=(C[i-1][j-1]+C[i-1][j])%mod;
}
inv[1]=1;for(int i=2;i<101;++i)inv[i]=(mod-(mod/i)*inv[mod%i]%mod)%mod;
B[0]=1;
for(int i=1;i<101;++i){
B[i]=0;
for(int j=0;j<i;++j)B[i]+=C[i+1][j]*B[j]%mod;
B[i]=(mod-B[i]%mod*inv[i+1]%mod)%mod;
}
while(T--){
n=gi(),m=gi();k=m+1;
for(int i=1;i<=m;++i)a[i]=gi();
std::sort(a+1,a+m+1);
ll ans=0;
a[++m]=n+1;
for(int i=1;i<=m;++i){
for(int j=i;j<=m;++j)ans+=(query(a[j]-1)-query(a[j-1])+mod)%mod;
for(int j=m;j>=i;--j)a[j]-=a[i];
}
printf("%lld\n",ans%mod);
}
return 0;
}

洛谷 P4593 [TJOI2018]教科书般的亵渎的更多相关文章

  1. 洛谷P4593 [TJOI2018]教科书般的亵渎 【数学】

    题目链接 洛谷P4593 题解 orz dalao upd:经典的自然数幂和,伯努利数裸题 由题我们只需模拟出代价,只需使用\(S(n,k) = \sum\limits_{i = 1}^{n} i^{ ...

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

    小豆喜欢玩游戏,现在他在玩一个游戏遇到这样的场面,每个怪的血量为\(a_i\)​,且每个怪物血量均不相同,小豆手里有无限张"亵渎".亵渎的效果是对所有的怪造成\(1\)点伤害,如果 ...

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

    题意 题目链接 Sol 打出暴力不难发现时间复杂度的瓶颈在于求\(\sum_{i = 1}^n i^k\) 老祖宗告诉我们,这东西是个\(k\)次多项式,插一插就行了 上面的是\(O(Tk^2)\)的 ...

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

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

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

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

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

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

  7. p4593 [TJOI2018]教科书般的亵渎

    分析 我们发现$Ans = \sum_i \sum_j (j-p_i)^{m+1}$ 因此直接套用622f的方法即可 代码 #include<bits/stdc++.h> using na ...

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

    [BZOJ5339][TJOI2018]教科书般的亵渎(斯特林数) 题面 BZOJ 洛谷 题解 显然交亵渎的次数是\(m+1\). 那么这题的本质就是让你求\(\sum_{i=1}^n i^{m+1} ...

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

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

随机推荐

  1. [翻译] DCPathButton

    DCPathButton https://github.com/Tangdixi/DCPathButton DCPathButton 2.0 is a menu button for iOS. Des ...

  2. [翻译] NSImage+HHTint - Tints grayscale images using CoreImage

    NSImage+HHTint - Tints grayscale images using CoreImage https://github.com/gloubibou/NSImage-HHTint ...

  3. Redis常用指令

    1.使用指令存储数据 不同数据类型的使用 1.String > 在以上指令中我们使用set指令向redis存进了一个数据类型为string,名为str1,值为123456.(如果你要问为什么,那 ...

  4. QtPropertyBrowser+vs2010的安装与配置

    之前编译过一次QtPropertyBrowser2.5,见文章http://www.cnblogs.com/aminxu/p/4516469.html,当时很激动,编译成功,lib也都编译通过,程序调 ...

  5. npm使用小结

    npm包管理工具使用小结 npm(node package manager)是一个node包管理工具,我们可以方便的从npm服务器下载第三方包到本地使用. 安装: NPM是随同NodeJS一起安装的包 ...

  6. BZOJ1444:[JSOI2009]有趣的游戏(AC自动机,矩阵乘法)

    Description Input 注意 是0<=P, n , l, m≤ 10. Output Sample Input input 1 3 2 2 1 2 1 2 AB BA AA inpu ...

  7. 【转】 Android中selector的使用

    引言 selector中文的意思选择器,在Android中常常用来作组件的背景,这样做的好处是省去了用代码控制实现组件在不同状态下不同的背景颜色或图片的变换.使用十分方便. selector的定义 s ...

  8. HBase学习之路 (三)HBase集群Shell操作

    进入HBase命令行 在你安装的随意台服务器节点上,执行命令:hbase shell,会进入到你的 hbase shell 客 户端 [hadoop@hadoop1 ~]$ hbase shell S ...

  9. Day7 访问权限

    构造者模式思想 进行初始化,解决了多个构造器重载,构造器参数过多记不住的情况. package day7;//声明一个程序包 class Employee{ private String name; ...

  10. mongodb启动与运用

    在操作前需要启动mongodb数据库服务 1.首先打开dos窗口,然后选择路径到你的安装路径下的bin目录(我的路径是的D:mongo\mongodb\bin) 2.然后输入启动命令(D:mongo\ ...