1. 程式人生 > >bzoj3456: 城市規劃 生成函式 多項式求逆 多項式求ln

bzoj3456: 城市規劃 生成函式 多項式求逆 多項式求ln

bzoj3456: 城市規劃

題目傳送門

分析

方法1:算二次法

考慮一張 n n 點的有標號無向圖的個數,顯然一共 C n 2

C_n^2 條邊,所以方案數是 g n = 2 C n
2 g_n=2^{C_n^2}

f i f_i 表示 i
i
個點的無向連通圖,一種計數的套路是列舉標號為1的點的所在聯通快大小,得到
g n = i = 1 n f i C n 1 i 1 g n i g_n=\sum_{i=1}^nf_i\cdot C_{n-1}^{i-1}\cdot g_{n-i}
g n ( n 1 ) ! = i = 1 n f i ( i 1 ) ! g n i ( n i ) ! \frac{g_n}{(n-1)!}=\sum_{i=1}^n\frac{f_i}{(i-1)!}\cdot \frac{g_{n-i}}{(n-i)!}
這是一個卷積的形式
G = g i i ! x i , F ( i ) = f i ( i 1 ) ! x i , M ( i ) = g i ( i 1 ) ! x i G=\sum \frac{g_i}{i!}x^i,F(i)=\frac{f_i}{(i-1)!}x^i, M(i)=\frac{g_i}{(i-1)! }x^i
那麼有
G F = M G\cdot F = M
F = M G 1 F=M \cdot G^{-1}
多項式求逆即可。

方法1:指數生成函式

具體可以看這裡
搞出 G ( n ) G(n) 的EGF
G ( x ) = 2 C i 2 x i ! G(x)=\sum2^{C_i^2}\frac{x}{i!}
搞出 F ( n ) F(n) 的EGF
F ( x ) = f i x i ! F(x)=\sum f_i\frac{x}{i!}
根據指數生成函式的集合劃分意義,可以得到
G ( x ) = e F ( x ) G(x)=e^{F(x)}
然後 F ( x ) = l n ( G ( x ) ) F(x)=ln(G(x))
所以多項式求ln即可
具體方法是
d F d x = d G G ( x ) \frac{dF}{dx}=\frac{dG}{G(x)}
然後
F ( x ) = d G G ( x ) F(x)=\int \frac{dG}{G(x)}
求導->多項式求逆->積分即可。
式子退出來是和方法1一樣樣的

程式碼

#include<bits/stdc++.h>
const int N = 524288, P = 1004535809;
int ri() {
    char c = getchar(); int x = 0, f = 1; for(;c < '0' || c > '9'; c = getchar()) if(c == '-') f = -1;
    for(;c >= '0' && c <= '9'; c = getchar()) x = (x << 1) + (x << 3) - '0' + c; return x * f;
}
int fix(int x) {return (x >> 31 & P) + x;}
int add(int a, int b) {return a += b, a >= P ? a - P : a;}
int mul(int a, int b) {return 1LL * a * b % P;}
int Pow(int x, int k) {
    int r = 1;
    for(;k; x = mul(x, x), k >>= 1)
        if(k & 1)
            r = mul(r, x);
    return r;
}
int Inv(int x) {return Pow(x, P - 2);}
int n, L, InvL, R[N], w[N], f[N], g[N], G[N], F[N], dG[N];
namespace NTT {
    void Pre(int m) {
        int x = 0; L = 1;
        for(;(L <<= 1) < m; ++x) ;
        for(
            
           

相關推薦

bzoj3456: 城市規劃 生成函式 多項式 多項式ln

bzoj3456: 城市規劃 題目傳送門 分析 方法1:算二次法 考慮一張 n n n點

[BZOJ3456]城市規劃(生成函數+多項式+多項式ln)

n) 100% 存在 d+ ont inner tar 現在 一行 城市規劃 時間限制:40s 空間限制:256MB 題目描述 剛剛解決完電力網絡的問題, 阿貍又被領導的任務給難住了. 剛才說過, 阿貍的國家

BZOJ3456: 城市規劃 多項式

sca 如果 數據 fpm void its bzoj3456 limit set 3456: 城市規劃 Time Limit: 40 Sec Memory Limit: 256 MBSubmit: 798 Solved: 451[Submit][Status][Di

[JZOJ3303][BZOJ3456] 城市規劃多項式】【生成函式】【未完成】

Description 剛剛解決完電力網路的問題, 阿狸又被領導的任務給難住了. 剛才說過, 阿狸的國家有n 個城市, 現在國家需要在某些城市對之間建立一些貿易路線, 使得整個國家的任意兩個城市都直接或間接的連通. 為了省錢, 每兩個城市之間最多隻能有一條直接的貿易路徑. 對

2019.01.03 bzoj3456: 城市規劃生成函式+多項式取對)

傳送門 生成函式好題。 題意:求n個點的簡單(無重邊無自環)無向連通圖數目 思路: 對簡單無向圖構造生成函式 f (

[帶標號無向連通圖計數 容斥原理 多項式 多項式ln 模板題] BZOJ 3456 城市規劃

可以通過容斥求出答案的表示式fi=2C2i−∑j=1i−1Cj−1i−1∗fj∗2C2i−j 其中前一部分表示i個點任意連邊 後半部分列舉1所在的連通塊然後容斥掉 ∑j=1ifj(j−1)!∗2C2i−j(i−j)!=2C2i(i−1)! 這是個卷積的

luoguP4389 付公主的揹包 多項式 多項式ln 多項式exp 生成函式

luoguP4389 付公主的揹包 題目傳送門 分析 神仙題系列。。。 首先寫出每件商品的生成函式,假設體積為 V V

【BZOJ3625】【codeforces438E】小朋友和二叉樹 生成函數+多項式+多項式開根

== reverse turn chang 一個 函數 span 化簡 amp 首先,我們構造一個函數$G(x)$,若存在$k∈C$,則$[x^k]G(x)=1$。 不妨設$F(x)$為最終答案的生成函數,則$[x^n]F(x)$即為權值為$n$的神犇二叉樹個數

bzoj3456 城市規劃

ret 化簡 include bzoj tdi 解決 總數 所在 繼續 Description 求含有n個點有標號的無向聯通圖的個數(沒有重邊),n<=130000 Input 3 Output 4

BZOJ3456: 城市規劃

BZOJ3456: 城市規劃 https://lydsy.com/JudgeOnline/problem.php?id=3456 分析: 設\(f[n]\)表示\(n\)個點的答案, \(g[n]\)表示總方案數。 列舉和\(1\)連通的點的個數, \(f[n]=g[n]-\sum\limit

[BZOJ3625][Codeforces Round #250][多項式][多項式開根]小朋友和二叉樹

模板題 題解 #include <cstdio> #include <iostream> #include <algorithm> #include <string> #include <cstrin

[bzoj 3625][Codeforces Round #250]小朋友和二叉樹 NTT多項式+多項式開根

Description 我們的小朋友很喜歡電腦科學,而且尤其喜歡二叉樹。 考慮一個含有n個互異正整數的序列c[1],c[2],…,c[n]。如果一棵帶點權的有根二叉樹滿足其所有頂點的權值都在集合{c[1],c[2],…,c[n]}中,我們的小朋友就會將其稱作

bzoj3625(NTT+多項式+多項式開根)

這題是我搜NTT搜到的,當時就看到“多項式開根”這樣的標題,於是找到了L-leader的部落格,補了下冪級數的東西,用兩節數學課學會了。 題面 我再看題解,好像都是教我怎麼開方,求逆的,然後又拖了幾天。終於昨晚睡不著,突然就想到了。。。 先介紹一下生成函式

[Notes][多項式]雜記 · 多項式演算法—多項式 多項式取模 多項式開根…

多項式 由若干個單項式相加組成的代數式叫做多項式 形如:f(x)=∑ni=0aixif(x)=∑i=0naixi, degf(x)deg⁡f(x)稱為ff的度,是f(x)f(x)最高次項的次數。 生成函式 形如∑∞i=0aixi∑i=0∞aixi

luogu P4725 多項式對數函數 (模板題、FFT、多項式導和積分)

lld sum %d detail define tdi 博客 while 復雜度 手動博客搬家: 本文發表於20181125 13:25:03, 原地址https://blog.csdn.net/suncongbo/article/details/84487306 題目鏈

洛谷P4841 城市規劃 [生成函數,NTT]

show play 所在 i+1 lin problem int pac emp 傳送門 題意簡述:求\(n?\)個點的簡單無向連通圖的數量\(\mod \;1004535809?\),\(n \leq 130000?\) 經典好題呀!這裏介紹兩種做法:多項式求逆、多項式求

luoguP4512 【模板】多項式除法 NTT+多項式+多項式除法

swa define space wap mod inpu eve urn -- Code: #include<bits/stdc++.h> #define maxn 300000 #define ll long long #define MOD

組合公式(有取餘)

https://blog.csdn.net/weixin_40149887/article/details/79861045 求解方法: 先算出n!%p、m!%p、(n-m)!%p,用fac[i]表示 i!%p 的值 因為組合數取模是(n!)/(m!(n-m)!)%p,因此需要計