题目类型总结整理

持续更新qwq


数据结构——树链剖分

  • 子树相关操作
  • 链上信息的更新(加,减,乘,赋值)
  • 维护链上信息
    • 维护链上有向信息,如有向最大差 例题:TJOI2015旅游
      就是维护前缀最大差,后缀最大差以满足有向的限制。最大差有两种选择方式。

数据结构——LCT

  • 维护链信息(LCT上的平衡树操作)
  • 动态维护连通性&双联通分量
  • 维护边权(常用于维护生成树)
  • 维护子树信息
  • 维护树上染色联通块

数据结构——左偏树

  • 合并,求最值 例题:APIO2012派遣

数据结构——线段树合并

  • 一般线段树都是权值线段树,我们对权值线段树进行合并。

数学——莫比乌斯反演

  • \(gcd(i,j)=k,i\in[a,b],j\in[c,d]\)的个数 要求\(O(N)\)
  • \(\sum_{i=1}^n\sum_{j=1}^md(ij)\) 要求\(O(N\sqrt N)\)

    数学——莫比乌斯反演——公式与技巧

  • \(i\in[1,n],j\in[1,m]\;then\;d(ij)=\sum_{i=1}^n\sum_{j=1}^m[gcd(i,j)=1]\)
  • \(\sum_{i=1}^n\lfloor\frac{m}{k}\rfloor[x|gcd(i,j)]=\sum_{i=1}^{\lfloor\frac{n}{x}\rfloor}\lfloor\frac{m}{xk}\rfloor\)
  • \(\sum_{i=1}^{n}\lfloor\frac{n}{i}\rfloor\)——整除分块

数学——BSGS

  • 一般用来在\(\sqrt N\)的时间内,解决对于\(y^x\equiv z\pmod p\),给定\(y,z,p\)求x的问题。

图论——生成树

图论——生成树——kruskal生成树

例题:NOI2018归程\(\;\)peaks加强版

  • 对于一个图,执行有关于从某个点出发的第几条小/大的边,或者从某个点出发小于/大于x的边不计算相关问题,强制在线。

图论——网络流

图论——网络流——最大流

  • 常用建图模型1:对于一个点多种状态的(比如说在不同时刻状态意义不一样),可以把这个点拆成n个点,来分别表示不同时刻的状态。
  • 询问最大流的几种方案中最长边的最小值 例题:SDOI费用流
    二分+限流跑dinic

图论——网络流——最小割

  • 最大权闭合子图模型
    • 出现环怎么办。缩点,给每个强连通分量里面的点都连一条-inf的边到T。(NOI植物大战僵尸)
  • 切糕模型 (给定一个立方体,它被分成pqr个格子,每个格子中都有一个数字,相邻地选择数字,每一行每一列都要选择一个数字。要求这些数字和最小。)
    • 建r+1层,然后这些边的权值是对应位置的数字权值。从每一个点(第z层)向它旁边四个纵轴连一条指向第z-d层的有向边
  • 带组合的决策问题 (给定n个点,每个点放进集合A有收获,放进B有对应收获,一些点组合起来一起放进A或B有额外收获,问最大收获?)
    • 如果处理额外收获?最小割,割掉表示不选。每个组合建对应集合个的新点,新点连对应集合的点INF。如果是问最小收获?直接把取值反成n-ci按原来的求,之后答案再还原一下即可。

动态规划——树形DP

动态规划——树形DP——虚树优化

  • 保留有效信息(如询问点和LCA),一般都出现在有询问点总和的条件约束的题目中。

动态规划——区间DP

  • 给定一个序列,可以删除大于1长度的,连续的,形成等差数列的数,删完之后两边拼合,求最后最少能剩下多少个数?
    无论怎么删,总是能拆成删若干次两个的+若干次三个的。所以区间DP+分类讨论即可。
  • n个数,对于每一个数i,有ai个数比它大,有bi个数比它小,可能有相同数出现。问最小的不合法约束数量? 例题:HAOI problem a
    做一个转化,每一个数的约束条件都是一个区间,这个区间内他们的数值都相同。每个区间都有一个权值,然后线性地DP即可。不过注意一个区间内最多有min(对应区间为此的数的数量,r-l+1)。

动态规划——区间DP——有决策点的DP

  • 已知[1,x]区间里有东西,每次可以从[1,n]区间中以a[i]的代价询问该点是否有东西,求最坏情况下能确定x所需要的代价? 例题:挖油,要求\(O(N^2)\)
    区间DP+优化。主要是用优先对列将其从\(O(n^3)\)优化到\(O(n^2)\),用n+1个优先队列维护该点状态主要从哪一种(作为最坏的)转移而来,1个维护固定左端点的,每次更换枚举的i时清空。n个维护固定右端点的,无需清空。

动态规划——普通DP

  • 一个n*m的矩阵,可以选择其中一个数字进行修改(当然也可以不修改),求最大/最小矩阵和。
    记录行/列最小值/最大值方便替换,记录一个不修改的最大/最小矩阵和和一个带修改的最大/最小矩阵和。
  • 一个n*m的矩阵,可以选择其中一个数字进行修改(当然也可以不修改),使得矩阵的最大子矩阵尽可能小。
    DP+分类讨论

其他技巧

  • 曼哈顿距离小于等于d的菱形可以通过更改坐标系(旋转45度)使其变成矩形。例题:BZOJ极光
  • 求满足\(l_i\le L\)或者\(R\le r_i\)\(i\)的数量,可以转化为以\(L,R\)为原点,求坐标在第二象限的点的个数,可以用线段树扫描线来做。 例题:ARC exhausted?

猜你喜欢

转载自www.cnblogs.com/fengxunling/p/10363327.html