題目泛做 蛋糕(分治NTT)

2021-09-27 06:49:26 字數 1838 閱讀 3625

原題是thupc2018蛋糕,然後這裡擴充套件到了n維,沒什麼區別。

核心思想就是乙個塊在其他維度上隨便亂跑,在這個維度上也能隨便亂跑。

所以我們實際上要考慮的就是在每一維上出現0,1,2個面的方案數。每一維可以任意選擇,所以直接分治ntt把每一維的生成函式乘起來就行了。

**:

#include

#define ll long long

#define re register

#define gc get_char

#define cs const

namespace io

template

<

typename t>

inline t get()

inline

intgi()

}using

namespace io;

using std::cerr;

using std::cout;

cs int mod=

998244353

;inline

intadd

(int a,

int b)

inline

intdec

(int a,

int b)

inline

intmul

(int a,

int b)

inline

intpower

(int a,

int b,

int res=1)

inline

void

inc(

int&a,

int b)

inline

void

dec(

int&a,

int b)

inline

void

mul(

int&a,

int b)

typedef std::vector<

int> poly;

cs int bit=

19,size=

1

,*w[bit+1]

;inline

void

init_ntt()

inline

void

ntt(

int*a,

int l,

int typ)

if(typ==-1

)}inline

void

init_rev

(int l)

inline poly operator

*(cs poly &a,cs poly &b)

cs int n=

1e5+7;

int n;

poly f[n]

;inline poly solve

(int l,

int r)

inline

void

solve()

else

} poly g=

solve(1

,n);

for(

int re i=

0,li=g.

size()

;i++i)cout<<<

" ";

for(

int re i=g.

size()

;i<=

2*n;

++i)cout<<

"0 "

;cout<<

"\n";}

signed

main()

17 10 20題目泛做

終於停課了 於是來補一發題解 hzwers模擬t1 逗比三角形 題意 給若干個三角形的三邊長然後問如何把這些三角形放在乙個寬度l ll高度無限的矩形框裡面使得這些三角形有一條邊緊貼矩形底邊的同時在矩形框裡面覆蓋的面積最大,並算出這個面積 分析 這非常結論題 顯然我們把三角形裡面最短的那條邊放在下面是...

17 10 24題目泛做

題意 求二維和與rmq,保證每次查詢的區間長寬不超過整個矩陣長寬的一半 分析 二維和沒難度,二維rmq這裡因為資料有問題 只好開short水過,同時順便加上了連續訪問的黑科技然後卡了過去 不過正解是經典的思想,就是一種簡單的變形 但好難寫啊qaq 我們考慮f i,j,k 表示以 i j 為左上角,邊...

CS Academy 題目泛做

乙個神犇同學向我推薦了這個oj。這個oj上的題目都是挺經典的。資料 標程 題解都有,已經是很方便了。出於強迫症,下面的題目按照字典序排列。太簡單的題大家應該都能一看就會,就直接略了。這個網經常崩,做起來好麻煩,所以這個坑先停了吧 addition 略。a game 顯然如果當前還有b就不會去選a。也...