转载请注明地址:http://www.cnblogs.com/LadyLex/p/8885799.html
太可怕了终于还是来做数学了……
之前只是看过一点点反演相关的东西
之前的总结:杜教筛 反演
提升的目标是思维,尤其是找到关键性质作为突破口的能力。
不可能找到一种解决所有问题的通式,尤其是在数学这里……所以培养观察分析关键性质的能力就尤为重要
这篇博客也将重点记录每道题的突破关键点……希望自己在2天时间里能有所提高……
一,UOJ#62
这道题是反演套反演套反演233333
这题的经验:
首先,反演的过程中不一定要出现$\mu$,我们可以直接用for循环$O(nln_{n})$处理。
所以不能被$\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,以及普通的莫比乌斯反演等等
二,loj2513
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
最后的总结:
这次数学专题的学习似乎就结束了……
感觉自己还是很虚,见到题还是不会做……
但是这次学到了不少新的思路,见到了不少新题……
接下来的话,大概会和最近一样找一些专题来做
发现有的数据结构题也挺妙的,数据结构不一定都是毒瘤题
以后找一些不错的数据结构题和制胡窜题目当作专题吧
以上。