神奇的数据结构——线性基
参考资料:CSU-ICPC集训课程 线性基_哔哩哔哩 (゜-゜)つロ 干杯~-bilibiliwww.bilibili.com线性基详解_Python_a_forever_dream的博客-CSDN博客blog.csdn.net
其中第一个视频提到那么多方法....然而我觉得我只学会了线性基最基本的方法和求第k小....其他等遇到再学吧,毕竟我这么菜。
哦对了,顺便提一下,据说线性基其实和线性代数中矩阵是存在很大关系的,包括求线性基其实本质就是高斯消元无回带。
线性基本质就是一串集合,不会可以自己看这两个博客....我只是负责记录题目的机器。
顺便分析一下,其实线性基本质就是一个“内容不唯一但是长度唯一”的集合。
题目记录:[BJWC2011]元素 - 洛谷www.luogu.com.cn
之前以为线性基只能做傻逼模板题,然后瞬间被打脸了....生疼.jpg
分析:线性基基本性质之一:数量唯一,当数量满了之后,必定会存在子集使得在插入任何一个数,为0.(线性基的本质是组建一个集合,使得整个集合的子集可以搭建原集合中的任意一个非零值,零需要特判)
所以很显然,按照魔力排序然后插入就好了。[TJOI2008]彩灯 - 洛谷www.luogu.com.cn
分析:题目本质上是要求多少种排列,直接线性基就好了后算非空的有多少种即可。
原因:线性基中的数就可以代表其他数了。
一些其他有趣的题目:Problem - 925C - Codeforcescodeforces.com
只看题目的话可能觉得他就是一个非常常见的问题:b1~bn,其中ai = b1^b2^b3....等等
求解方式多样,可以自己思考,不过抓住本质就可以(我觉得和线性基非常相像)
异或最小生成树
这是一道非常神奇的例题。使用了一种以b开头的求最小生成树的思想。
思考分治处理联通块之间的关系,我们递归处理联通快,每个连通块只有在必须要连接时我们才会连接他们之间的最小边,于是就是建立字典树,然后在字典树上分治处理即可。
code(希望好好学习一下,因为其实我觉得这道题比较难,代码也不是很好写):
关于多校的b题一份参考代码(我觉得这个更有道理一些)
一道很有思维难度的数位dp and 卡常题Problem - 6899acm.hdu.edu.cn
为什么说它卡常呢.....因为如果是通常的数位dp模板是通过不了的,但是如果你是使用将limit放进dp函数里面的话,是可以正常通过的(是不是非常神奇)。
接下来就是正常的数位dp了,可以直接搜索cometoj xor 这道题目(其实我觉得这道题不简单)。