[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中運用 退流 思想,對於每乙個點求出它的...