字典树,Trie

字典树是啥捏?字典树详解
模板看这里,或者是这里
字典树与异或:

  • 字典树与异或经常有关,可以建一棵\(01Trie\)树,
    令树的深度为\(\log_2 Max\),所有要放进字典树里的数都把它们对齐到这么深(小的往前面补零)(eg:最大异或对)(这道题建完树后枚举每个\(a[i]\),将\(a[i]\)在树上跑一遍,每位若可选不同的就选,否则选相同的)

  • 注意A ^ B ^ A^C =B^C,所以异或其实是可以做各种预处理的。
    这道题。先预处理出根到每个节点的异或和,得到\(n^2\)个异或和,然后就变为上面那个题。

  • 前m位相同,第m+1位不同,可用字典树。比如\(a[i]\)的二进制下m+1位为x,则tre[u].son[1^x]起到到底有多少条链,它就会贡献多少。(eg:lowbit求和)

  • 注意异或没有同余性,即(A^B)%p \(\ne\)(A%p)^B
    运动积分,也不知道该咋总结,看看吧。

正常字符串

  • 给一堆字符串,问其中哪些字符串是由其他字符串组成(单词拼接),当字符串最大长度小于字符串总数时,可以第一层循环枚举哪一个字符串,第二层枚举当前字符串在哪个位置分开为两个,再跑字典树。
posted @ 2024-09-23 21:23  煦阳gyy  阅读(11)  评论(0编辑  收藏  举报