摘要: 01trie 定义 01-trie是字符集为0,1的trie,可以维护异或极值,维护异或和 实现 主体仍然是 trie ,维持 \(t\) 数组记录儿子不变。需要因为异或的性质,所以只需要维护加入 0/1 边的奇偶性即可,所以添加 \(w\) 数组记录父节点到该节点的边数。此外因为要统计异或和,所以 阅读全文
posted @ 2024-02-16 18:30 妖灵梦 阅读(79) 评论(0) 推荐(0)
摘要: 矩阵快速幂 定义 使用矩阵乘法加速递推 注意点 可以预处理 \(2^k\) 次乘方的转移数组,到询问时,只需要乘 \(log(n)\) 次即可 要注意矩阵的赋值不要覆盖赋值,有的时候慎用 = 要用 += 要注意矩阵中的符号,会使取模操作出问题 要注意加速递推时 f[i]=f[i-1] 处于i位的数应 阅读全文
posted @ 2024-02-16 15:55 妖灵梦 阅读(14) 评论(0) 推荐(0)
摘要: 线段树进阶 动态开点 定义 动态存储数据的线段树,可以优化空间复杂度 实现 为了避免 \(N<<1\) ,不再使用完全二叉树存储,而记录左右儿子 \(ls,rs\) 此外需要 \(tot\) 记录已经开了多少点 在递归时要记录点的左右区间,确保开点时能知道区间大小 void modify(int & 阅读全文
posted @ 2024-02-16 15:53 妖灵梦 阅读(32) 评论(0) 推荐(0)
摘要: VP-CF1879 总结 Url:https://codeforces.com/contest/1879 Score:A+B+C+D D 做出来了,使用了一个复杂的方法。拆位肯定没错,但是有异或前缀和的方法,可以大大简化码量。 E 做出来了,贪心搞出来性质,即按深度染色。但是没读题,没看到 \(k\ 阅读全文
posted @ 2024-02-16 15:28 妖灵梦 阅读(17) 评论(0) 推荐(0)
摘要: 重链剖分 优先走重儿子,路径跳不超过 \(O(\log n)\) int siz[N],fa[N],dep[N],top[N],dfn[N],hson[N],dfc;//注意每个都要处理 void dfs1(int x,int Fa){ fa[x]=Fa; siz[x]=1; hson[x]=0; 阅读全文
posted @ 2024-02-16 15:22 妖灵梦 阅读(15) 评论(0) 推荐(0)
摘要: CF1929 总结 Url:https://codeforces.com/contest/1929 Rating:https://codeforces.com/bestRatingChanges/12561378 C 误解了题意,以为赌场会配合他前面x次都输然后赢最后一场。原来赌场不会配合Sasha 阅读全文
posted @ 2024-02-16 15:19 妖灵梦 阅读(26) 评论(0) 推荐(0)
摘要: 虚树 (Compressed Tree) 定义 树上有一些关键点,有很多无用点,所以就关键点建树称为虚树。 建立虚树 不能只有关键点,一般还要有他们的lca,才能统计信息。信息的需求和统计方法多种多样,要求max,min,cnt等等。可以树链剖分+线段树或倍增法维护虚边。 可证虚树节点不超过 \(2 阅读全文
posted @ 2024-02-16 11:55 妖灵梦 阅读(24) 评论(0) 推荐(0)