[BZOJ 3157] 国王奇遇记
Link:
Solution:
题意:求解$\sum_{i=1}^n m^i \cdot {i^m}$
$O(m^2)$做法:
定义一个函数$f[i]$,$f[i]=\sum_{i=1}^n k^i \cdot {m^k}$
$(m-1)\cdot f(i)=\sum_{k=1}^n k^i \cdot m^{k + 1} - \sum_{k=1}^n k^i \cdot m^k$
$= \sum_{k=1}^{n+1} (k - 1)^i\cdot m^k - \sum_{k=1}^n k^i \cdot m^k $
$= n^i \cdot m^{n + 1} + \sum_{k=1}^n m^k \sum_{j = 0}^{i - 1} {i \choose j} \cdot (-1)^{i - j} \cdot k^j $
$= n^i \cdot m^{n + 1} + \sum_{j = 0}^{i - 1} {i \choose j} \cdot (-1)^{i - j} \sum_{k = 1}^n k^j \cdot m^k $
$= n^i \cdot m^{n + 1} + \sum_{j = 0}^{i - 1} {i \choose j} \cdot (-1)^{i - j} \cdot f(j) $
接下来只要预处理$C_i^j$,递推即可
Code:
#include <bits/stdc++.h> using namespace std;
typedef long long ll;
const int MAXN=1e3+;
const int MOD=1e9+; ll C[MAXN][MAXN],f[MAXN],n,m,pre,dvs; ll quick_pow(ll a,ll b)
{
ll base=a,res=;
while(b)
{
if(b&) res=(res*base)%MOD;
b>>=;base=base*base%MOD;
}
return res;
} int main()
{
scanf("%lld%lld",&n,&m);
if(m==){printf("%lld",n*(n+)/%MOD);return ;} pre=quick_pow(m,n+);dvs=quick_pow(m-,MOD-);
C[][]=;
for(int i=;i<=m;i++)
{
C[i][]=;
for(int j=;j<=i;j++) C[i][j]=(C[i-][j]+C[i-][j-])%MOD;
} f[]=(pre-m+MOD)%MOD;(f[]*=dvs)%=MOD;
for(int i=;i<=m;i++)
{
pre=pre*n%MOD;f[i]=pre;
for(int j=;j<i;j++)
{
ll mark=((i-j)&)?-:;
(f[i]+=mark*C[i][j]*f[j]%MOD)%=MOD;
}
(f[i]+=MOD)%=MOD;(f[i]*=dvs)%=MOD;
}
printf("%lld",f[m]);
return ;
}
Review:
此题的加强版:BZOJ 3516/BZOJ 4126
最后一题要用到$O(m)$的算法,然而我并不能看懂
Resources:
http://blog.miskcoo.com/2014/06/bzoj-3157
http://blog.miskcoo.com/2015/08/special-polynomial-linear-interpolation
http://trinkle.blog.uoj.ac/blog/478
杜教论文:http://www.docin.com/p-638538589.html
也许先补一补多项式定理再多看看具体数学没有公式密集恐惧症了就能看懂了?
[BZOJ 3157] 国王奇遇记的更多相关文章
- BZOJ 3157: 国王奇遇记 (数学)
题面:BZOJ3157 一句话题意: 求: \[ \sum_{i=1}^ni^m\ \times m^i\ (mod\ 1e9+7)\ \ (n \leq 1e9,m\leq200)\] 题解 令 \ ...
- bzoj 3157 && bzoj 3516 国王奇遇记——推式子
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3157 https://www.lydsy.com/JudgeOnline/problem.p ...
- bzoj 3157 & bzoj 3516 国王奇遇记 —— 推式子
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3157 https://www.lydsy.com/JudgeOnline/problem.p ...
- 3157: 国王奇遇记 & 3516: 国王奇遇记加强版 - BZOJ
果然我数学不行啊,题解君: http://www.cnblogs.com/zhuohan123/p/3726933.html const h=; var fac,facinv,powm,s:..]of ...
- BZOJ 3516 国王奇遇记加强版(乱推)
题意 求\(\sum_{k=1}^{n}k^mm^k (n\leq1e9,m\leq1e3)\) 思路 在<>中有一个方法用来求和,称为摄动法. 我们考虑用摄动法来求这个和式,看能不能得到 ...
- 【BZOJ】【3157】&【BZOJ】【3516】国王奇遇记
数论 题解:http://www.cnblogs.com/zhuohan123/p/3726933.html copy一下推导过程: 令$$S_i=\sum_{k=1}^{n}k^im^k$$ 我们有 ...
- bzoj3157国王奇遇记(秦九韶算法+矩乘)&&bzoj233AC达成
bz第233题,用一种233333333的做法过掉了(为啥我YY出一个算法来就是全网最慢的啊...) 题意:求sigma{(i^m)*(m^i),1<=i<=n},n<=10^9,m ...
- 【BZOJ3157/3516】国王奇遇记(数论)
[BZOJ3157/3516]国王奇遇记(数论) 题面 BZOJ3157 BZOJ3516 题解 先考虑怎么做\(m\le 100\)的情况. 令\(f(n,k)=\displaystyle \sum ...
- bzoj3157: 国王奇遇记
emmm...... 直接看题解好了: BZOJ-3157. 国王奇遇记 – Miskcoo's Space O(m)不懂扔掉 总之,给我们另一个处理复杂求和的方法: 找到函数之间的递推公式! 这里用 ...
随机推荐
- wait for it
- at用法小记
By francis_hao Aug 22,2017 at – 设置稍后执行的作业. 概要 at [-V] [-f file] [-mMlv] timespec...at [-V] [-f ...
- 修改innodb_flush_log_at_trx_commit参数提升insert性能
最近,在一个系统的慢查询日志里发现有个insert操作很慢,达到秒级,并且是比较简单的SQL语句,把语句拿出来到mysql中直接执行,速度却很快. 这种问题一般不是SQL语句本身的问题,而是在具体的应 ...
- Hyperledger Fabric架构详解
区块链开源实现HYPERLEDGER FABRIC架构详解 区块链开源实现HYPERLEDGER FABRIC架构详解 2018年5月26日 陶辉 Comments 10 Comments hyper ...
- JSR330的注解和spring的原生注解的比较
下面的图比较了JSR330和spring的原生注解.其实在大多数场合下他们之间可以互相代替.有可能spring写注解时参考了JSR330的注解:
- node搭建文件服务器
python可以在目录下python -m http.server 8080来启动一个静态文件服务器,使用node实现一个 运行node fileServer.js D:\lanFeature 即可将 ...
- javascript实现瀑布流效果(固定宽度)
HTML代码: <div id="content"> <div class="box"> <div class="img ...
- eclipse读取含有extjs的项目文件时卡死
打开项目的.project文件,将<buildCommand> <name>org.eclipse.wst.jsdt.core.j ...
- 学习正则表达式及c#应用
1.0正则表达式语法 正则表达式是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”).模式描述在搜索文本时要匹配的一个或多个字符串. 正则表达式示例 表达式 ...
- Codeforces Round #299 Div2 解题报告
这场比赛并没有打现场,昨天晚上做了ABCD四道题,今天做掉了E题 以前还没有过切完一场比赛的所有题呢~爽~ A. Tavas and Nafas Today Tavas got his test ...