codeforces 932E Team Work 高等数学求导、dp
題解
這是一道純粹的數(shù)學(xué)求導(dǎo)題目。
首先我們先寫出要求的公式。
ans=∑r=1nCnrrkans = \sum_{r=1}^{n} C_n^{r}r^kans=∑r=1n?Cnr?rk
乍一看,霧草好嚇人,但是學(xué)過高等數(shù)學(xué)且稍有常識(shí)的人(不是我)可以看出,這個(gè)可以由某個(gè)式子不斷乘x并求導(dǎo)得出來。
沒錯(cuò),稍有常識(shí)的人又可以看出來了,這個(gè)式子就是(1+x)n(1+x)^n(1+x)n
(1+x)n=∑r=0nCnrxr(1+x)^n = \sum_{r=0}^{n}C_n^{r}x^r(1+x)n=∑r=0n?Cnr?xr
我們定義 f0=ddx(1+x)n=n(1+x)n?1f_0 = \fracze8trgl8bvbq{dx}(1+x)^n = n(1+x)^{n-1}f0?=dxd?(1+x)n=n(1+x)n?1
同時(shí)f0(x)=∑r=1nCnrrxr?1f_0(x) = \sum_{r=1}^{n} C_n^{r}rx^{r-1}f0?(x)=∑r=1n?Cnr?rxr?1
定義ft(x)=ddx(xft?1(x))f_t(x) = \fracze8trgl8bvbq{dx}(xf_{t-1}(x))ft?(x)=dxd?(xft?1?(x))
這樣的話fk?1(x)=∑r=1nCnrrkf_{k-1}(x) = \sum_{r=1}^{n} C_n^{r}r^kfk?1?(x)=∑r=1n?Cnr?rk
那么我們要求的答案ans=fk?1(0)(1)ans = f_{k-1}^{(0)}(1)ans=fk?1(0)?(1)
我們知道ft(x)=ddx(xft?1(x))=ft?1(x)+xft?1(1)(x)f_t(x) = \fracze8trgl8bvbq{dx}(xf_{t-1}(x))=f_{t-1}(x)+xf_{t-1}^{(1)}(x)ft?(x)=dxd?(xft?1?(x))=ft?1?(x)+xft?1(1)?(x)
通過這個(gè)操作,ft(p)(1)=(p+1)ft?1(p)(1)+ft?1(p+1)(1)f_t^{(p)}(1) = (p+1)f_{t-1}^{(p)}(1)+f_{t-1}^{(p+1)}(1)ft(p)?(1)=(p+1)ft?1(p)?(1)+ft?1(p+1)?(1)
沒錯(cuò)!這就是我們的遞推公式!
定義dp[i][j]=fi(j)(1)dp[i][j] = f_{i}^{(j)}(1)dp[i][j]=fi(j)?(1)
dp[i][j]=(p+1)?dp[t?1][p]+dp[t?1][p+1]dp[i][j] = (p+1)*dp[t-1][p]+dp[t-1][p+1]dp[i][j]=(p+1)?dp[t?1][p]+dp[t?1][p+1]
由于我們只需要ans=dp[k?1][0]ans=dp[k-1][0]ans=dp[k?1][0],那么就只需要dp[k?2][0...1]dp[k-2][0...1]dp[k?2][0...1],…,只需要dp[0][0...k?1]dp[0][0...k-1]dp[0][0...k?1]
狀態(tài)數(shù)O(K2)O(K^2)O(K2)
代碼
#include <cstdio> #include <iostream> #include <algorithm> using namespace std; typedef long long ll; ll N,k; const ll mod = 1e9+7; const int maxn = 5007; ll dp[maxn][maxn],sum[maxn]; ll mod_pow(ll x,ll n){ll ans = 1;while(n){if(n&1)ans = ans * x % mod;x = x*x%mod;n >>= 1;}return ans; } int main(){cin>>N>>k;if(N == 1){return 0*printf("1\n");}ll pre = N;for(int t = 0;t < min(N,5005ll);++t){dp[0][t] = pre*mod_pow(2,N-1-t)%mod;pre = pre*(N-1-t)%mod;}for(int i = 1;i <= k;++i){for(int j = 0;j <= k;++j){dp[i][j] = ((j+1)*dp[i-1][j] + dp[i-1][j+1])%mod;}}printf("%lld\n",dp[k-1][0]);return 0; }總結(jié)
以上是生活随笔為你收集整理的codeforces 932E Team Work 高等数学求导、dp的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 110栏世界纪录介绍 110栏世界纪录是
- 下一篇: codeforces 938D Buy