LOJ#6374 网格
題解:
挺好的一道題
兩次容斥+一次二項式反演
首先考慮部分分不存在k的限制
然后我們發現兩維之間是互相獨立的
下面以x軸為例
然后問題就變成了
$$\sum\limits_{i=1}^{R} {xi}=k (xi<=Mx)$$
這個東西是個經典問題,容斥做就可以了
$$h(R)=\sum\limits_{i=0}^{R}{{(-1)}^{i}*C_R^i *p(i)}$$
$$p(x)= C_{Tx-(Mx+1)*x+R-1}^{R-1}$$
但是這樣還不對,因為走$(0,0)$是不合法的
所以我們求出來的$h(R)$是至多走了$R$步的方案數
令$g(x)$表示正好走了$x$步$(0,0)$的方案數
$$h(R)=\sum\limits_{i=0}^{R} { C_R^i *g(i) }$$
由這個可以二項式反演得出$g(R)$
$$g(R)=\sum\limits_{i=0}^{R} { {(-1)}^{R-i} * C_R^i *h(i) }$$
這個復雜度是$O(R*MIN(R,Tx/Mx))$的
現在加入了k個不能走的限制
顯然我們需要繼續容斥
因為都是$g$的倍數所以可以$/g$后進行
$dp[i][j]$表示選出$i$個和為$j$的方案數
$$ans=\sum\limits_{i=0}^{n} { {(-1)}^{i} \sum\limits_{j=0}^{100} {dp[i][j]* C_R^i *calc(Tx-j*G,R-i)} }$$
時間復雜度的話
注意到因為$g>=1e4$,所以$Mx$也要$>=1e4$
那么復雜度就是$O(50*(1e6/1e4)*(1e6/1e4)*1e3)$
并且這個很顯然是不滿的
轉載于:https://www.cnblogs.com/yinwuxiao/p/10190805.html
總結
以上是生活随笔為你收集整理的LOJ#6374 网格的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dig指定服务器查询域名解析时间
- 下一篇: SyncNavigator数据库同步软件