Link:

BZOJ 3157 传送门

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] 国王奇遇记的更多相关文章

  1. BZOJ 3157: 国王奇遇记 (数学)

    题面:BZOJ3157 一句话题意: 求: \[ \sum_{i=1}^ni^m\ \times m^i\ (mod\ 1e9+7)\ \ (n \leq 1e9,m\leq200)\] 题解 令 \ ...

  2. bzoj 3157 && bzoj 3516 国王奇遇记——推式子

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3157 https://www.lydsy.com/JudgeOnline/problem.p ...

  3. bzoj 3157 & bzoj 3516 国王奇遇记 —— 推式子

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3157 https://www.lydsy.com/JudgeOnline/problem.p ...

  4. 3157: 国王奇遇记 & 3516: 国王奇遇记加强版 - BZOJ

    果然我数学不行啊,题解君: http://www.cnblogs.com/zhuohan123/p/3726933.html const h=; var fac,facinv,powm,s:..]of ...

  5. BZOJ 3516 国王奇遇记加强版(乱推)

    题意 求\(\sum_{k=1}^{n}k^mm^k (n\leq1e9,m\leq1e3)\) 思路 在<>中有一个方法用来求和,称为摄动法. 我们考虑用摄动法来求这个和式,看能不能得到 ...

  6. 【BZOJ】【3157】&【BZOJ】【3516】国王奇遇记

    数论 题解:http://www.cnblogs.com/zhuohan123/p/3726933.html copy一下推导过程: 令$$S_i=\sum_{k=1}^{n}k^im^k$$ 我们有 ...

  7. bzoj3157国王奇遇记(秦九韶算法+矩乘)&&bzoj233AC达成

    bz第233题,用一种233333333的做法过掉了(为啥我YY出一个算法来就是全网最慢的啊...) 题意:求sigma{(i^m)*(m^i),1<=i<=n},n<=10^9,m ...

  8. 【BZOJ3157/3516】国王奇遇记(数论)

    [BZOJ3157/3516]国王奇遇记(数论) 题面 BZOJ3157 BZOJ3516 题解 先考虑怎么做\(m\le 100\)的情况. 令\(f(n,k)=\displaystyle \sum ...

  9. bzoj3157: 国王奇遇记

    emmm...... 直接看题解好了: BZOJ-3157. 国王奇遇记 – Miskcoo's Space O(m)不懂扔掉 总之,给我们另一个处理复杂求和的方法: 找到函数之间的递推公式! 这里用 ...

随机推荐

  1. 12.25模拟赛T3

    可以发现,答案O(根号)(因为链上答案最大,n/2,n/3...根号种) 每次求答案要二分 优秀的做法是: 对于小于根号n的暴力nlogn找,可能二分到同一个mid,记忆化一下最小的tot值 对于大于 ...

  2. nc用法小记

    By francis_hao    Jun 30,2017   ncat:连接和重定向套接字 概要 ncat [OPTIONS...] [hostname] [port]   描述 ncat 是一个集 ...

  3. 使用 FirewallD 构建动态防火墙

    使用 FirewallD 构建动态防火墙 FirewallD 提供了支持网络/防火墙区域(zone)定义网络链接以及接口安全等级的动态防火墙管理工具.它支持 IPv4, IPv6 防火墙设置以及以太网 ...

  4. React 使用 fetch 请求天气

    中国天气网(http://www.weather.com.cn)提供了查询天气的 API,通过传入城市 id, 可以获得当前城市的天气信息,API 相关信息如下: 规格  描述 主机地址 http:/ ...

  5. js如何弹出新窗口

    js如何弹出新窗口 时间:2012-4-22 弹出新窗口也是在网页设计中会经常用到的,其用法也很简单,是通过调用javascript的内置函数windows.open来产生的.  window.ope ...

  6. [POJ1423]Stirling公式的应用

    Stirling公式: n!约等于sqrt(2*pi*n)*(n/e)^n 另外,e约等于2.71828182845409523... 试了一下发现math库里面并不能像pi一样直接调e但是发现挺好记 ...

  7. 单源最短路模板_SPFA_Dijkstra(堆优化)_C++

    随手一打就是标准的SPFA,默认1号节点为出发点,当然不用 f 判断是否在队里也可以,只是这样更优化一点 void spfa() { int i,x,k; ;i<=n;i++) { d[i]=o ...

  8. 列出top中的pid

    #!/usr/bin/env python import os import string #方法1:通过字符串的isdigits来判断 #filelist = os.listdir('/proc') ...

  9. platform_driver_register,什么时候调用PROBE函数 注册后如何找到驱动匹配的设备【转】

    转自:http://blog.chinaunix.net/uid-25508271-id-2979412.html kernel_init中do_basic_setup()->driver_in ...

  10. [ Openstack ] Openstack-Mitaka 高可用之 Dashboard

    目录 Openstack-Mitaka 高可用之 概述    Openstack-Mitaka 高可用之 环境初始化    Openstack-Mitaka 高可用之 Mariadb-Galera集群 ...