数据结构专题题单总结

  1. 如果涉及到连通块,并且要删点/加点,可以考虑并查集,删点操作常倒叙变为加点。
  2. 平衡树也可以维护最大/最小值,同时平衡树不一定要按照点权构造二叉搜索树,当有“在第i个元素后面插入x/删除第i个元素”时可以将数组下标作为平衡树点编号,并且按这个构造二叉搜索树。
  3. 求若干个不相交子段的和,可以先取所有正数段,然后若正数段数量超了,可以添加负数段/删除正数段,用双向链表+堆维护。
  4. 当有一堆x对另一堆y贡献时不仅可以直接枚举每个x对哪些y贡献,也可以考虑每个y会收到多少个x的贡献。还有,不是考虑一下就完事了,当有一些关系可转化为等式/不等式,式子你得推啊!
  5. 求最值时可以考虑排序,枚举的方法处理暴力,还可以考虑二分和双指针。
  6. 一个二叉树(i的儿子维2i与2i+1,1为根),每个点的二进制编码就是从1号节点到这个节点的路径。最高的1代表根节点,之后的0代表左儿子,1代表右儿子,一直走到最低位,就是这个二进制数对应的节点。但凡时上述这种二叉树,即可往二进制上考虑。
  7. 如果一个题没思路,可以先往尽量暴力(所有变量全部暴力枚举)上想,在用数据结构优化。当dp中要求区间查询时,可想线段树(线段树每个下标上不一定是dp值,也可能是它+/-另个东西)
posted @   煦阳gyy  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示