1. 程式人生 > >紀中寒假集訓1.18總結

紀中寒假集訓1.18總結

qaq題目好難啊
不過也還是可以水分的

今天做的THUWC模擬,簡要放個題解:

【A:群】

題意

求對於大小為n的置換對於“複合”這一運算ab所構成的階為k的群的個數
1n1051k5

分析

最近怎麼總是遇到群論的題目……之前loj上碰到兩道,今天又來……
這裡k很小,所以可以考慮特殊討論
k=1誰都會
考慮一種比較特殊的情況,就是這個所構成的群是一個迴圈群,大概就是一個{e,g,g2,g3,g4}的樣子
很明顯由於群的封閉性,考慮其中某一個g,如果ge,那麼g2g,然後進一步地可以產生後面的那些置換
當然我們還需要的是進一步產生的這些置換不相同,那麼就構成了一個迴圈群,迴圈群的階顯然就是迴圈節的長度+

1(算上單位元)
考慮如果k是質數(k=2,3,5)的時候,只能是考慮相應階=k的情況,這個可以通過搞出生成元之後DP解決
但是如果k=4就複雜得多了,首先同構於迴圈群的情況很容易解決,只是要考慮1,2,4的情況
然後還有一種情況,就是對於某個{e,i,j,k}滿足i2=j2=k2=e,而且ij=kik=jkj=i,很像四元數,而且置換的性質也差不多是犧牲了交換律的
然後考慮相當於依次地考慮i,j,k,然後再乘回來63!)就可以了
先列舉一波i,因為i2=e,那麼考慮列舉i裡面長度2的迴圈,設有a個,剩下來的長度為1的迴圈有n2a個,下面問題在於怎麼繼續把這些輪換放到jk裡面去
下面引用原題解:

這 a 個大小為 2 的輪換在 j 和 k 中有兩種組合方式.
第一種是兩兩組合, 比如說 i 中的兩個輪換 (a b)(c d) 在 j 和 k 中分別對應 (a d)(b c) 和
(a c)(b d), 這樣的話, 它對答案的貢獻就是 2.
第二種是單個組合, 比如說 i 中的 (a b) 在 j 和 k 中分別對應 (a b) 和 (a)(b), 這樣的貢獻
仍然是 2.
因此這一部分的每一種方案的貢獻是 2, 而所有方案的總貢獻就求個和就可以了.
剩下的 n − 2a 個大小為 1 的輪換也有兩種情況.
第一種是單個組合, 比如說 i 中的 (a) 在 j 和 k 中都是 (a), 這樣的貢獻是 1.
第二種是兩兩組合, 比如說 i 中的 (a)(b) 在 j 和 k 都是 (a b), 這樣的貢獻也是 1.
因此這一部分的貢獻是所有輪換都不大於 2 的置換個數.
最後再乘一個排列數, 列舉哪些位置是大小為 1 的輪換就可以了.

【B:幾何題】

題意

ij|a(xixj)+b(yiyj)+c(zizj)+d|n(n1)(xixj)4+(yiyj)4+(zizj)4
其中xi,yi,zi77n777777

分析

考慮利用數論函式變形的時候的常用套路,列舉這裡三個維度上座標的差,那麼我們現在要求的實際上就是統計相應的座標差的時候的方案數
先考慮一維的差的時候可以怎麼做來推廣下,我們可以考慮讓A1(x)=i=1nxai,然後搞一波A1(x)A1(1x),對應係數就完成了生成函式的計數
我們如法炮製搞一個A3(x,y,z)=i=1nxaiybizci,然後同樣乘起來就好辣!
然後來一個三維FFT就解決了我們可以考慮利用類似進位制轉換的思路,考慮把