bzoj 3157 && bzoj 3516 国王奇遇记——推式子
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3157
https://www.lydsy.com/JudgeOnline/problem.php?id=3516
题解:http://blog.miskcoo.com/2014/06/bzoj-3157
没管 O(m) 的方法……
UPD(2019.2.20):这样构造的思想大概是想要用 \( f(j) \) (j<=i) 来表示出 \( f(i) \) 。
考虑 \( f(m)=\sum\limits_{i=1}^{n}i^m*m^i \) ,那么要令 \( f(i) = \sum\limits_{k=1}^{n} k^i*i^k \) 还是 \( f(i) = \sum\limits_{k=1}^{n} k^i*m^k \) 还是 \( f(i) = \sum\limits_{k=1}^{n} k^m*i^k \) 呢?
想构造出那个递推关系,一种方法是乘上一个 ( * - 1 ) ,然后用二项式定理拆开,再把一些项合并成 \( f(j) \) 。
如果是这种方法的话, \( k^i \) 很好,因为在二项式的式子里,指数会变成一些较小的指数;而 \( i^k \) 则没有什么优势,所以令 \( f(i) = \sum\limits_{k=1}^{n}k^i*m^k \)
现在想从 \( k^i \) 入手,弄出一个 \( (k-1)^i \) 或者 \( (k+1)^i \);一种方法是让后面那个 \( m^k \) 的指数变化1,也就是变成 \( m^{k+1} \) 或者 \( m^{k-1} \) ,这样改变一下枚举 k 的范围,就出现了 \( (k-1)^i \) 或者 \( (k+1)^i \) 了。
让 \( m^k \) 指数变化就是给 \( f(i) \) 乘上一个 m 。再要有一个作对比的 \( \sum\limits_k \) ,才能实现让乘了 m 的那部分的 \( \sum\limits_k \) 改变。所以乘上 ( m-1 ) 或者 ( m+1 ) 。然后就可以考虑推式子了。
注意特判 m==1 的时候。因为那个式子不支持 m==1 。
UPD(2019.3.22):关于扰动法:https://www.cnblogs.com/meowww/p/6410869.html
大概就是把 \( \sum\limits_{i=1}^{n} \) 的式子写成 \( \sum\limits_{i=1}^{n+1} \) 的样子,放在等号两边。
然后一边把 i=n+1 的项拿出来,另一边把 i=1 的项拿出来。则另一边可以写成 \( \sum\limits_{i=1}^{n}(i+1)... \) ,就可以用二项式定理了。
对于这道题,生搬硬套一下,式子就可以这样推:
令 \( S_t=\sum\limits_{i=1}^{n}i^t * m^i \) ,则有
\( S_t + (n+1)^t m^{n+1} = m + \sum\limits_{i=2}^{n+1}i^t * m^i \)
\( = m + \sum\limits_{i=1}^{n}(i+1)^t * m^{i+1} \)
\( = m + m \sum\limits_{i=1}^{n}\sum\limits_{j=0}^{t}\binom{t}{j}i^j * m^i \)
\( = m + m \sum\limits_{j=0}^{t}\binom{t}{j}S_j \)
\( = m + m*S_t + m \sum\limits_{j=0}^{t-1}\binom{t}{j}S_j \)
所以 \( (m-1)S_t = (n+1)^t m^{n+1} - m - m \sum\limits_{j=0}^{t-1}\binom{t}{j}S_j \)
实测和之前那个式子输出结果一样。
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const int N=,mod=1e9+;
int n,m,s[N],c[N][N];
void upd(int &x){x>=mod?x-=mod:;}
int pw(int x,int k)
{int ret=;while(k){if(k&)ret=(ll)ret*x%mod;x=(ll)x*x%mod;k>>=;}return ret;}
void init()
{
for(int i=;i<=m;i++)c[i][]=;
for(int i=;i<=m;i++)
for(int j=;j<=i;j++)
c[i][j]=c[i-][j]+c[i-][j-],upd(c[i][j]);
}
int main()
{
scanf("%d%d",&n,&m);init();
if(m==){printf("%lld\n",((ll)(+n)*n>>1ll)%mod);return ;}
s[]=(ll)m*(-pw(m,n))%mod*pw(-m,mod-)%mod+mod,upd(s[]);
for(int i=,ml=(ll)n*pw(m,n+)%mod;i<=m;i++,ml=(ll)ml*n%mod)
{
int pls=;
for(int j=,fx=(i&?-:);j<i;j++,fx=-fx)
pls=(pls+(ll)c[i][j]*s[j]*fx)%mod+mod,upd(pls);
s[i]=(ll)(ml+pls)*pw(m-,mod-)%mod;
}
printf("%d\n",s[m]);
return ;
}
bzoj 3157 && bzoj 3516 国王奇遇记——推式子的更多相关文章
- bzoj 3157 & bzoj 3516 国王奇遇记 —— 推式子
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3157 https://www.lydsy.com/JudgeOnline/problem.p ...
- BZOJ 3516 国王奇遇记加强版(乱推)
题意 求\(\sum_{k=1}^{n}k^mm^k (n\leq1e9,m\leq1e3)\) 思路 在<>中有一个方法用来求和,称为摄动法. 我们考虑用摄动法来求这个和式,看能不能得到 ...
- 3157: 国王奇遇记 & 3516: 国王奇遇记加强版 - BZOJ
果然我数学不行啊,题解君: http://www.cnblogs.com/zhuohan123/p/3726933.html const h=; var fac,facinv,powm,s:..]of ...
- BZOJ3157: 国王奇遇记 & 3516: 国王奇遇记加强版
令\[S_i=\sum_{k=1}^n k^i m^k\]我们有\[\begin{eqnarray*}(m-1)S_i & = & mS_i - S_i \\& = & ...
- bzoj3157 3516 国王奇遇记
Description Input 共一行包括两个正整数N和M. Output 共一行为所求表达式的值对10^9+7取模的值. 特判m=1 m≠1时: 设S[u]=sigma(i^u*m^i) m*S ...
- 【BZOJ】【3157】&【BZOJ】【3516】国王奇遇记
数论 题解:http://www.cnblogs.com/zhuohan123/p/3726933.html copy一下推导过程: 令$$S_i=\sum_{k=1}^{n}k^im^k$$ 我们有 ...
- 【BZOJ3157/3516】国王奇遇记(数论)
[BZOJ3157/3516]国王奇遇记(数论) 题面 BZOJ3157 BZOJ3516 题解 先考虑怎么做\(m\le 100\)的情况. 令\(f(n,k)=\displaystyle \sum ...
- bzoj3157国王奇遇记(秦九韶算法+矩乘)&&bzoj233AC达成
bz第233题,用一种233333333的做法过掉了(为啥我YY出一个算法来就是全网最慢的啊...) 题意:求sigma{(i^m)*(m^i),1<=i<=n},n<=10^9,m ...
- bzoj3157: 国王奇遇记
emmm...... 直接看题解好了: BZOJ-3157. 国王奇遇记 – Miskcoo's Space O(m)不懂扔掉 总之,给我们另一个处理复杂求和的方法: 找到函数之间的递推公式! 这里用 ...
随机推荐
- vue iview组件表格 render函数的使用
如果要在标签中加入属性,例如img 中src属性 a标签中href属性 此时需要用到 attrs 来加入而不是props { title: '操作', key: 'action', align: 'c ...
- IOS-如何锁定Xcode的API头文件
如何锁定Xcode的API头文件1, 打开终端2, 前往Xcode.app, 命令: cd /Applications/Xcode.app3, 把头文件修改为只读, 命令: sudo chown -h ...
- inline-block 文字与图片不对齐
文字旁边搭配图片时,发现图片比文字靠上,原来默认的情况是图片顶对齐而文字底对齐,通过设置css属性可以使得图片与文字对齐. 设置各对象的vertical-align属性,属性说明: baseline- ...
- 【zznu-夏季队内积分赛3-J】追忆
题目描述 “别人总说我瓜,其实我一点也不瓜,大多数时候我都机智的一批“现在是阳历2018/8/7,宝儿姐想起自己参加ACM整整1000天了.她想知道她刚入坑是什么时间.那么问题来了,请帮宝儿姐追忆一下 ...
- Win10 怎么给php文件设置默认打开应用
一,首先以管理员身份打开命令提示符 二,assoc .php=phpfile 创建一个文件关联 三,ftype phpfile="E:\Program Files\Sublime Text ...
- WIFI 基础知识
转载自:wifi基本知识 如侵犯您的版权,请联系:2378264731@qq.com 1. IE802.11简介 标准号 IEEE 802.11b IEEE 802.11a IEEE 802.11g ...
- New Concept English three(16)
35w/m 43 Mary and her husband Dimitri lived in the tiny village of Perachora in southern Greece. One ...
- 服务上部署jmeter远程机
1.首先连接服务器 2.在/home下新创建一个自己的文件夹 ]#useradd zhuxiao ]#ls 显示新的用户并在home下创建zhuxiao文件夹 ①切换到用户zhuxiao目录下 ]#s ...
- linux c++ 多线程心得
好久没写多线程了,工作好几年也没怎么大规模的写过多线程,都是成形的架构里写业务逻辑.偶尔自己写了下,各种踩坑... 1.string 不是线程安全的 一个特例是std::string.在一些STL的实 ...
- wireshark的一些快捷键
恢复原来的大小 ‘crtl’+‘=’ 即按住crtl建和=键(backspace左边那个键) 缩小 ‘crtl’+‘-’ 即按住crtl建和-键(backspace左边第二个键) 放大 ‘crt ...