转载请注明地址: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
此次数学专题的学习彷佛就结束了……
感受本身仍是很虚,见到题仍是不会作……
可是此次学到了很多新的思路,见到了很多新题……
接下来的话,大概会和最近同样找一些专题来作
发现有的数据结构题也挺妙的,数据结构不必定都是毒瘤题
之后找一些不错的数据结构题和制胡窜题目看成专题吧
以上。