轉載請註明地址:http://www.cnblogs.com/LadyLex/p/8885799.htmlhtml
太可怕了終於仍是來作數學了……算法
以前只是看過一點點反演相關的東西數組
提高的目標是思惟,尤爲是找到關鍵性質做爲突破口的能力。函數
不可能找到一種解決全部問題的通式,尤爲是在數學這裏……因此培養觀察分析關鍵性質的能力就尤其重要學習
這篇博客也將重點記錄每道題的突破關鍵點……但願本身在2天時間裏能有所提升……優化
這道題是反演套反演套反演233333ui
這題的經驗:spa
首先,反演的過程當中不必定要出現$\mu$,咱們能夠直接用for循環$O(nln_{n})$處理。htm
因此不能被$\mu$侷限住思惟,而要觀察兩個函數之間的相互關係
第二,在遇到一個形如$f(gcd(i,j))$很差化開的時候,咱們有這樣一種思路:
尋找/構造一個新函數$g(x)$,使得$f(n)=\sum_{d|n}g(d)$
這樣的話,咱們能夠把$f(gcd(i,j))$的限制變成$\sum_{d|i,d|j}g(d)$
這樣也許就能找到新的突破口,好比咱們能夠把$d|i$和$d|j$這兩個條件拆開利用,或者改變枚舉順序……之類的
第三,數論和線性代數之間也是有密切聯繫的。以前一直沒有注意到這一點
好比咱們的反演過程其實能夠表示爲乘一個逆矩陣
可是因爲莫比烏斯反演的矩陣比較特殊,因此咱們能有方便的作法。
此外,此題也有用線性代數理解的方法:咱們依然使用上面那個$g$函數,定義下面三個矩陣:
$A_{ij}=[j|i]$,$B_{ij}=[i==j]g(i)$,$C_{ij}=[i|j]$,手推一下能夠發現$f=A*B*C$,
這裏說一下觀察到的一個小性質
若是咱們給一個矩陣A乘一個只有對角線上有元素的矩陣B,那麼效果至關於給第i行每一個
很棒的一點是這三個矩陣的逆都是能夠求的,那麼咱們就得到了$O(n^2)$直接算逆的作法
最後推式子優化也能夠作到$O(nlog_{n})$
(不過我我的感受仍是上面三次反演好理解)
*咱們具體說一下莫反的線性代數形式
咱們知道,$\sum_{d|n} \mu(d) == [n==1]$
那麼變一下形,就會有$[m|n] \sum_{d|\frac{n}{m}}\mu(d)==[\frac{n}{m}==1]==[n==m]$
若是咱們把$n$和$m$當作下標,上面這個就是一個單位矩陣
接着,咱們枚舉$c=m*d$,給原式繼續變形,則有:
$ \sum_{c} [c|n][m|c]\mu(\frac{c}{m})$
如今,咱們找兩個矩陣A和B,使得$A_{cn}==[c|n]$,$B_{mc}==[m|c]\mu(\frac{c}{m})$
那麼會有$BA==I$,這裏$I$爲單位矩陣
從上面$f$和$g$的定義咱們又知道$f=g*A$
兩邊同乘$B$,那麼$f*B=g$,你會發現這也就是莫比烏斯反演的那個式子
後來又看了看vfk老師的ppt
發現一句很棒的話,這種用反演把二元限制關係拆成獨立的思想很不錯
體現有fwt,dft,fmt,以及普通的莫比烏斯反演等等
md傻逼高斯消元有80分部分分?
邊界判錯了能有20分,真是感動
而後看了一眼徐明寬老師的標程,一眼發現一個叫gauss的函數???
那我仍是本身想吧,這什麼牛逼題啊
而後把矩陣輸出了出來
發現是個下三角矩陣
md那我還n^3個jb啊,這樣直接n^2消元就好了
而後這道水題就作完了,但是我卻打了一上午這個題
怎麼回事?回憶一下,我一開始想了不能過數據的統計方式,加和而後除以總的方案數
打了一個半小時纔打完裸消元,而後交上去,發現不對
而後才改變了計算方式,而後又調了一個多小時才發現那個邊界
而後拿到70分以後發現了性質……
…………可能我與出題人心靈不相通吧……
不過下次作題的時候要先考慮好全部的式子和邊界狀況,
邊打邊想很容易漏狀況
這兩天玩高斯消元發現了新思路:觀察式子/矩陣,能夠獲得$O(n^{2})$甚至$O(n)$的消元
其實就是手動枚舉代替for循環233333
這裏是分割線,此次我效率好低啊……只作了這一點題……
接下來就是持續一上午的講題環節
因爲本身是個傻逼,過後才發現有不少精彩的部分都再本身走神的時候錯過了
悟以往之不鑑,知來者之可追……之後要提升效率,不能讓本身失望啊……
感受前幾天作題的時候和別人討論的時候效率極其低下
之後在作題的時候要先避免討論啊……感受本身效率低好有負罪感啊……對不起本身的目標啊……
加油加油!
那麼……來看一看此次講的題目
因爲多項式部分聽的比較認真就先說一下多項式吧……
首先此次我終於解決了一個問題:這些XXT是怎麼構造出來的
感謝RYF的講解,雖然咱們兩個坐到一塊兒討論老是會變得效率低下2333333
如今咱們想要一個複雜度優於n^2的變換,知足有正變換和逆變換(變換矩陣可逆)
怎麼求解呢?因爲咱們變換都是「正變換-->對應位相乘-->逆變換」這樣一個過程
咱們能夠把目標式和計算式兩個正變換寫在等號兩邊,化一下式子,你會發現你構造的變換矩陣應該知足
$T_{k,i} * T_{l,i} = T_{k#l,i}$
這樣就特別棒了,好比,咱們手解個方程能夠解出$fwt$的矩陣
此外,若是下標系統知足循環律的話咱們還能夠利用單位根構造一下,好比$dft$
其實這些變換都是有一個if語句的限制關係擺在那裏讓咱們很難處理
通常限制有mod關係,相等的關係,位運算的關係……
而後,咱們須要結合這個語句尋找把限制轉化的方法
好比,循環卷積的if是mod,咱們利用單位複數根求和的特判找到拆開mod的方法
fwt的或/與變換,咱們把p|q==r變成p屬於r&&q屬於r來拆限制,而後用高維前綴和作變換
反演中的gcd咱們尋找d|i && d|j 來拆限制
二項式反演,咱們用$(1-1)^n$的展開式代替$n==m$,而後作反演等等
感受本身對反演以及變換有了新的認識……
另外彷佛學到了一個新技巧,好幾道題都用了這個變形:$ik=((i+k)^2-i^2-k^2)/2$
另一種形式是 $ik=((i+k)(i+k-1)-i(i-1)-k(k-1))/2$,這種寫法多見於任意長度循環卷積中
不過這個科技我只是略微聽了一下,沒有實際實現過……待補坑
這樣,咱們若是在卷雞的時候有一項的指數有ik堆在一塊兒的狀況,
用這個技巧就能夠在卷的時候把指數中同時存在$ik$的指數拆開,而後就能夠作了
以及lc的題對於差分的應用真的很6啊……
我的感受本身一直不會用差分……就很虛弱
咱們差分的用處有不少,好比維護信息的時候能夠把區間加改爲單點加,區間加等差數列改爲區間加……等等
還能夠用於推式子……若是表達式中有難處理的東西也許能夠差分掉
裂項相消法
錯位相減法
而後還能夠經過差分觀察性質,好比以前那個置換的題,發現轉移式子至關於交換差分的那個
還能夠經過差分處理一些有單調性的題目,好比維護後綴最大值的差分數組的那題
可是……說了這麼多要是真碰到題目仍是不會用23333
反演的部分有一個不錯的題目是srs的bzoj2627:JZPKIL
這題也挺不錯的……我沒想到的一個地方是分解質因子
具體來講,因爲n很大,咱們有意識的把有積性的函數都歸到一塊兒,設他們爲函數$F$
而後枚舉n的質因子,那麼$f(n)=\prod(f(pi^ki))$
而因爲這是反演題因此他有個$mu$……在質因子只有一種的狀況下,mu只有2種可能的狀況有值:0次方的1和1次方的-1
而後咱們的式子就被簡化了,就可作啦!
在式子中有mu的時候這種分解質因子的處理方法彷佛很經典
一我的的數論和循環之美兩道經典題目中都有這種處理方式的應用
另外,yzh的題目也很不錯
我的只能想出30分的部分分,並無推導更多的式子
其實換成枚舉gcd就能夠想出分數更高的算法?
正解是一個……$O(n^{\frac{3}{7}})$的算法,目前沒有研究明白
看起來,一些數論題目(尤爲是這些毒瘤反演)的複雜度分析也是很重要的一環
積分是經常使用的姿式
若是複雜度分析很差,可能會本身打錯解,也可能不敢打正解
不過如今考試彷佛不會特別仔細的算時空複雜度
之後要注意這一點,避免由於這個浪費時間
接着是一些機率和博弈的題目
wq選的題目是一道很不錯的博弈論(bzoj4220)
以前咱們說的博弈論都是sg函數等等模型或者結論的東西
可是事實證實,高端玩家們都不玩結論題了23333
這些博弈論題目更加註重「博弈分析」,即利用人類智慧,分析遊戲的過程,考慮何時遊戲決策會很優秀
真是燒腦啊……分析這個東西很是的考察思惟啊……
對於本題來講,咱們首先能夠分析兩個玩家的決策,寫出一個收益矩陣
而後……咱們會意識到,若是每一個人都使用單一策略,由於兩人都是絕頂聰明的,因此兩我的就永遠不會肯定一個穩定的策略
而後咱們就會意識到咱們應該找一個帶機率的穩定策略,使得兩我的都沒法經過調整策略使得本身收益增長,而對手不動
雖然這就是納什均衡的模型吧……可是這個分析在不知道這個模型的狀況下也是能夠作出來的
在這以後,咱們求出那個平衡點的機率,這樣咱們就得到了兩我的的策略,而後就能夠繼續分析了……
這種博弈分析的題目我以前根本沒見過,分析問題的思惟也沒有特地去訓練過
有時間的話,挑兩道好題訓練一下吧,也許能夠和wq要兩道
接着,ltr的題目彷佛是那種思惟難度很高代碼很短的題目?
課前看到這題就沒有思路……結果講的時候也沒有聽懂,一點思路都沒有
因此GG了……
而後……感受很內疚的是在聽wxhao的機率數據結構(loj2263),
以及wxhui的量子態fwt(uoj328)的時候我走神了……
因此基本處於懵X狀態,沒能從題目上面收穫不少
感受虧死了啊啊啊……此次有3道好題都沒有學習到,不知道還有沒有時間補題……
最後是總共的題表,按講課順序2333
uoj62 zzh
bzoj2627 srs
loj509 yzh
原創題+cf901E lc
loj6271/548 ryf
uoj328 wxhui
bzoj4220 wq
loj552 ltr
loj2263 wxhao
bzoj4820 wzz
再總結一下數學專項的考試題?
如今看來其實大部分都是上面寫過的東西?
明明是考了以後才寫的
有一個題目我以爲特別新奇,就是那個找循環節而且利用了BSGS的題
感受本身作數學題的時候最不會想到的就是循環節了……虛弱……
而且用BSGS找循環節我也是沒有想過的,單知道能夠求A^x=B (mod C)
可是其實那個也是循環節啊……總之本身仍是沒有這個意識
若是有循環節的話咱們就能夠減小本來按題目定義是無窮的計算量
以前有一個題意是作無限次fwt的題也能夠用找循環節作
本身找循環節的意識基本爲0……考試基本想不起來
要培養一下這個意識……
而後有一個奇形怪狀的gauss題目
利用了一大波指望的線性性
那個題思惟難度也挺高的,很nb
此次數學專題的學習彷佛就結束了……
感受本身仍是很虛,見到題仍是不會作……
可是此次學到了很多新的思路,見到了很多新題……
接下來的話,大概會和最近同樣找一些專題來作
發現有的數據結構題也挺妙的,數據結構不必定都是毒瘤題
之後找一些不錯的數據結構題和制胡竄題目看成專題吧
以上。