CTSC2010 效能優化

2022-02-05 03:55:12 字數 1563 閱讀 8863

[ctsc2010]效能優化

迴圈卷積快速冪

兩個注意點:

n+1不是2^k*p+1形式,任意模數又太慢?n=2^k1*3^k2*5^k3*7^k4

多路分治!深刻理解fft運算本質:分治,推式子得到從下往上的迭代公式

最後求的是w_n^i的點值

快速冪:

迴圈卷積快速冪比較特殊,就是g*f,>=n的項的係數加到-n位置上

所以,由於w(n,p+n)=w(n,p),點值相乘直接得到g*f的點值表達

f,b點值,快速冪相乘即可

不用把n擴充係數等。

//

luogu-judger-enable-o2

//luogu-judger-enable-o2

#include#define reg register int

#define il inline

#define fi first

#define se second

#define mk(a,b) make_pair(a,b)

#define numb (ch^'0')

using

namespace

std;

typedef

long

long

ll;template

il void rd(t &x)

template

il void output(t x)

template

il void ot(t x)

template

il void prt(t a,int st,int nd)

namespace

miracle;

intn,mod,c;

intg,gi;

int ci[10

];int ad(int x,int

y)int qm(int x,int

y)

return

ret;

}int dep[33

],cnt;

void

divi()

bool che(int

x) }

return

true;}

void

fin()

intf[n];

intb[n];

intpos[n];

int getpos(int

x)//

cout<<" bac "intg[n];

int pw[7*n][2

];int mem[10

];void fft(int *f,int n,int

c) }

for(reg j=0;jj)}}

las*=p;

}}int

main()

return0;

}}signed main()

/*author: *miracle*

date: 2019/3/19 18:42:47

*/

算是對fft本質的理解吧。

ctsc2010 星際旅行

題意很簡單 給定一棵樹,問從根分別走到每個節點的最長路程,其中每個點給定lim,即最多從該點出發lim次,保證lim大於等於該點的度數。特別 鳴謝 ldl在他的模擬題中出了這道題。當題解講這要用樹形dp解網路流模型時,都被驚異了,完全沒有想到網路流,也完全沒有必要網路流,atm在考場上直接有樹形dp...

CTSC2010 產品銷售

先考慮流。s i 連流量 d i 費用 0 i t 連流量 u i 費用 p i i i 1 連流量 inf 費用 c i i 1 i 連流量 inf 費用 m i 維護當前點到前面是否是反向邊可以用差分陣列。在當前點增廣完後,使用差分陣列判定當前點到前面的反向邊流量。分析複雜度 一條邊在被向右增廣...

Ctsc2010 星際旅行(退流思想)

傳送門 思想很重要,題目給出了每個星球的hi大於等於與該星球直接相連的星球數 即度數 就說明從0點出發,一定可以再回到0點。在第一次dfs中把一些還可以加的流加入使得答案更大。因為圖此時已經連通。然後對於相鄰的兩個點,就一定至少有乙個的度數為0。在第二次dfs中運用 退流 思想,對於每乙個點求出它的...