给$n$个白木板,$k$个红木板,放置木板。
$Q$个询问。
- 周长为$Q_i$
- 有一块红木板,其余都是白木板,成以红为中心单峰。即前面上升,之后下降
求方案数,$n,l_i,l_k,q\leq 3\times 10^5,k\leq 5$
周长$=2\times (红木板长度+木板数量)$
枚举每一块红木板。考虑如何放置($a$白木板,$b$红木板)
- 如果$a[j]<b[i],cnt[a[j]=1$ ,表示可以放左边也可以放右边。
- 如果$a[j]1$ ,只存在一个木板放在左边,一个放在右边。(这样就不出现重复了)
- $n1$表示$a[j]<b[i],cnt[a[j]=1$的数量,
- $n2$表示$a[j]1$的数量。
还需要放$k$个白木板的就是$\sum_{i+j=k} (2^i)C_{n1}^iC_{n2}^j$
这里使用$NTT$卷积即可。复杂度$O(k(n+nlogn)+kq)$
代码
1 |
|