a.
首先容易發現要求的東西是個多項式快速冪,最終要保留x項。
暴力的做大約是2個$log$的。然後發現多項式的次數很低,所以可以考慮一些奇怪的東西(也許是套路?)。
將$P^{n+1}$求導,有兩種方式,即複合函數求導和乘積的導數,然後根據這兩個式子可以列出方程,然後可以遞推出每一項係數。
複雜度$O(kx)$。
b.
首先容易發現,一個序列的貢獻只和0或1出現n個的位置有關,所以可以枚舉這個位置組合數算貢獻。
然後觀察可以發現相鄰兩個特殊位置之間貢獻都是類似的,可以通過前綴和預處理出來。
但是這個貢獻和k有關,所以並不能全部預處理。
由於k的和不大,所以可以發現k的全部取值也只有根號種,全部預處理出來即可。
c.
首先考慮k爲奇數的情況,對於大小大於$k/2$的集合,顯然要將他們選入一個單獨的集合,那麼然後將較小的集合塞進去。
由於$k<=n$,所以必然滿足$C(n,x)>=C(n,k-x) (x>=k/2)$,所以可以將每個大小較小的集合都塞進大集合所在的集合裏面。跑個二分圖匹配就行了。
然後考慮k爲偶數的情況,與上面不同的是,多出了$x=k/2$的情況,這一部分只能自己和自己配對,所以直接跑二分圖匹配就沒戲了。
然後就要解決一般圖匹配問題,可以打帶花樹來解決,由於此題圖很簡單,所以隨機算法也很優秀。