HDU2065 紅色病毒 問題 母函式

2021-07-25 05:39:58 字數 1126 閱讀 8553

ac通道:

【題解】

由4種字母組成,a和c只能出現偶數次。

構造指數級生成函式:(1+x/1!+x^2/2!+x^3/3!……)^2*(1+x^2/2!+x^4/4!+x^6/6!……)^2.

前面是b和d的情況,可以任意取,但是相同字母一樣,所以要除去排列數。後者是a和c的情況,只能取偶數個情況。

根據泰勒展開,e^x在x0=0點的n階泰勒多項式為 1+x/1!+x^2/2!+x^3/3!……

而後者也可以進行調整,需要把奇數項去掉,則e^(-x)的展開式為1-x/1!+x^2/2!-x^3/3!……

所以後者可以化簡為(e^x+e^(-x))/2。則原式為 (e^x)^2   *  ((e^x*e^(-x))/2)^2

整理得到e^4x+2*e^2x+1。

又由上面的泰勒展開 

e^4x = 1 + (4x)/1! + (4x)^2/2! + (4x)^3/3! + ... + (4x)^n/n!;

e^2x = 1 + (2x)/1! + (2x)^2/2! + (2x)^3/3! + ... + (2x)^n/n!;

對於係數為n的係數為(4^n+2*2^n)/4=4^(n-1)+2^(n-1);

快速冪搞之。

——**acm_cxlove

/************

hdu 2065

by chty

2016.12.7

************/

#include#include#include#include#include#include#includeusing namespace std;

typedef long long ll;

#define file "read"

const ll mod=100;

ll t,n;

namespace init

while(isdigit(ch))

return x*f;

}}using namespace init;

ll fast(ll a,ll b)

int main()

printf("\n");

} return 0;

}

hdu 2065 紅色病毒 問題

複習母函式,發現這道題可以用矩陣快速冪。然後做了一下 母函式 看起來好複雜的樣子 列dp方程,構造矩陣 dp n dp i 0 表示放到了第i位,前i位中有 偶數個a,有 偶數個c dp i 1 表示放到了第i位,前i位中有 奇數個a,有 偶數個c dp i 2 表示放到了第i位,前i位中有 偶數個...

hdu 2065 紅色病毒 問題

problem description 醫學界發現的新病毒因其蔓延速度和internet上傳播的 紅色病毒 不相上下,被稱為 紅色病毒 經研究發現,該病毒及其變種的dna的一條單鏈中,胞嘧啶,腺嘧啶均是成對出現的。現在有一長度為n的字串,滿足一下條件 1 字串僅由a,b,c,d四個字母組成 2 a出...

hdu2065 紅色病毒 問題

思路 先暴力打個表,然後找規律.include includeint main int b 5 4 int64 n,m while scanf d t eof t printf n return 0 description 醫學界發現的新病毒因其蔓延速度和internet上傳播的 紅色病毒 不相上下...