湖南雅禮培訓 1 6

2022-04-01 11:18:37 字數 3065 閱讀 2011

懷疑以前學了假的strling數,看了乙個很相似的題bzoj2159的題解,終於理解了本題的solution

*/#include

#include

#include

#define maxn 200010

#define mod 998244353

using

namespace

std;

intn,m,k,num,head[maxn],du[maxn];

int f[maxn][510],strl[510][510

];struct

nodee[maxn];

void insert(int

from,int

to)queue

q;intmain()

q.push(1);

f[1][0]=1

;

while(!q.empty())

}strl[

0][0]=1

;

for(int i=1;i<=k;i++)

for(int j=1;j<=i;j++)

strl[i][j]=(1ll*strl[i-1][j-1]+1ll*strl[i-1][j]*j)%mod;

for(int i=1;i<=n;i++)

return0;

}100分 strling數

}40分 暴力

/*

人生第一篇樹套樹

*/#include

#include

#include

#define maxn 100010

using

namespace

std;

int num,head[maxn],dc=0

;int fa[maxn][20

],idl[maxn],idr[maxn];

intn,q,type,col[maxn],croot[maxn];

struct node_e[maxn*2

];void insert(int

from,int to)

void dfs(int

now)

idr[now]=dc;

}struct

segment_tree

int query(int now,int l,int r,int l,int

r)}t;

struct

b_i_t

}int sum(int r,int x,int

y)

return

res;

}}bit;

void modify(int now,int c,int

v) bit.add(c,idl[down],v);

if(now!=1)bit.add(c,idl[fa[now][0]],-v);

}int

main()

dfs(1);

for(int i=1;i<=n;i++)modify(i,col[i],1

);

int lastans=0

;

while(q--)

else

}return0;

}

100分 樹狀陣列套線段樹

雅禮培訓 Problem A 線段樹

維護一段區間,支援求區間最大值,區間且,區間或 n,q 2 10 5 我們用線段樹維護區間最大值 對於and和or運算,and實質就是強行把一些位改為0 or實質就是強行把一些位改為1 那麼由線段樹區間標記的思想,如果某個操作對整個區間的影響是相同的,並且能很快維護出當前節點資訊,我們就可以通過打標...

雅禮國慶集訓

灑落君臣契,飛騰戰伐名。杜甫 公安縣懷古 noip 前的乙個月。這浸滿熱血的虔信,真的會化作墓碑嗎?或許明日我們不再是戰友,但人生終將有無數個此時。define f z,u,v for int z u des z v z des z z struct bnd struct tup template ...

2018雅禮 折射

雅禮題好難啊。這個dp題思路好強。這個東西首先一眼就知道按y排的dp怎麼寫,大概就是設 f i,j,k 表示考慮到y座標從大到小排名為i的點,這線上一次轉是j,上上次轉是k的數量,直接二維限制轉移就行了。考慮這東西怎麼優化。字首和能搞時間,woc空間也被卡了?打出來表看一看?這個dp陣列有好多都是空...