設 \(a_i>0\) 的 \(i\) 為第一類數字,否則為第二類數字
設 \(f_\) 表示前 \(i\) 個位置中填入了 \(j\) 第二類數字的方案數
根據狀態定義不難得到可以放置的第二類數字的數量,那此處放入第二類數字的貢獻係數就是可以放入的數量
對於放置第一類數字的情況,我們只在每個數必須放置時將方案數附加到轉移式子中
仍然根據狀態定義 計算出來 「可以」(不是已經)放入當前位置之前的空位處的的第一類數字數量,同時也可以算出來 「必須」 放入當前位置之前的第一類數字數量
使用乙個填入空位的排列數即可得到轉移式子,注意根據狀態定義,當前位置即使放的是第二類數字也要附加排列數
code display
const int n=5010;
int dp[n][n],a[n],n,ton[n],pre[n];
int fac[n],ifac[n];
inline int a(int n,int m)
signed main()
rep(i,1,n) pre[i]+=pre[i-1];
dp[0][0]=1;
int alr=0;
for(int i=1;i<=n;++i)
alr+=ton[i];
} print(dp[n][pre[n]]);
return 0;
}
先對於每個 \(i\in [1,n]\) 求出樹上兩點間路徑長度每個 \(i\) 的方案數
不難發現對答案的貢獻方式是關於 \(1-p_i\) 多項式,所以使用 【模板】多項式多點求值 即可完成本題
code display
const int n=3e5+10;
而不是vectorg[n];
int r[n],w[n],n,q;
inline void ntt(vector&f,int lim,int opt)
inline void solve(int x);
for(auto t:g[x]) if(!vis[t]); return ;}
int mid=(l+r)>>1; prework(p<<1,l,mid); prework(p<<1|1,mid+1,r);
p[p]=mul(p[p<<1],p[p<<1|1]);
return ;
}inline void solve(int p,int l,int r,vectorf)
void solve()
}signed main()}\),已經到了可以忽略不計的地步了
實現的時候注意使用的是mt19937
srand
即可一些可能的暴力做法是將表示原串的部分中插入原串其中的欽定點的位置在原串前面用二進位制表示出來,通過不同的表示原串的左界的設定可以得到 60 分,另外 15 分可以通過讓兩位之首為 1 來表示其是原串中的元素
聽說這是通訊題?感覺還是很有趣的(做這題時間長得以至於沒發現多點求值板子,給出題人點(fa)贊(dao))
code display
const int n=1010,m=2050;
bitsetst[m],bas[n];
bitsetid[m];
int n;
inline void insert(int nid,bitsetnow)
now^=bas[i];
ids^=id[i];
} return ;
}void encoder(int nn, int m, int k, const char* a, const char* b, char* ans)
assert(!tmp.any());
rep(i,0,m-1) ans[i]=mark[i]+'0';
return ;
}void decoder(int n, int m, const char* a, char* ans)
2022 01 25 連岳摘抄
23 59 我從來不認為半小時是微不足道的很小的一段時間。達爾文 君子懷刑,小人懷惠 孔夫子的這八個字,才是正確的貴人觀,乙個人管權管錢,越是重要,越不能忘記。你的貴人,你成為別人的貴人,乙個大特徵就是時刻想著做錯事的後果就是刑罰,戰戰兢兢,如履如臨。與貴人相反的小人只會時時想著利益,一有好處就忘乎...
考試總結 CQOI2017 考試總結
再奮鬥一年,爭取ak noip2016 cqoi2017 這是去年我立的flag。看考場,電腦挺快,而且配置和評測機一樣,可以放心的在自己的電腦上卡常測試啦,好評。碼了一道fft的題,沒網只好拷著回家交,鍵盤蜜汁小,enter佔據了兩行,旁邊還有關機按鈕。座位安排奧妙重重,和巴蜀dyf大神坐在一起。...
MBA考試總結
終於考完了 mba入學統考,兩年來參加了兩次,感覺還是挺辛苦和有壓力的。第一年沒有通過是因為之前了解太遲,大概準備了 20天左右,最後還是功成垂敗。09年其實也一直沒有心情複習的,逼到最後的 20天,狠了一把勁,還是狠狠的複習了幾天,貌似今年應該可以通過了。總結經驗如下 1 如果你決定去做一件事,請...