• 2023-12-02最近公共祖先
    目录倍增法求LCA倍增法实现倍增法求LCA倍增法倍增法(英语:binarylifting),顾名思义就是翻倍。它能够使线性的处理转化为对数级的处理,大大地优化时间复杂度。这个方法在很多算法中均有应用,其中最常用的是RMQ问题和求LCA(最近公共祖先)。实现'f[x][i]'表示x向上跳\(2^i\)
  • 2023-10-15CF585F Digits of Number Pi
    CF585FDigitsofNumberPi更好的阅读体验观察数据范围,考虑数位DP。首先把长串中\(len\geq\lfloor\frac{d}{2}\rfloor\)的串提出来,塞进一个trie里,然后建立ACAM,然后直接DP就行了。设\(f_{i,j,0/1,0/1,0/1}\)表示当前在trie图上走了j步到达了第i个节点,是否已
  • 2023-05-20拦截导弹
    拦截导弹贪心策略如下所示:图一表示具体做法,图二表示证明上图的证明是指,如果最优解和贪心存在第一个地方不一样,那么因为\(a\)是\(\gex\)的最小数,所以\(b\gea\),所以这两段是可以互换的,所以最优解是可以变成贪心的。性质,\(g\)数组单调不降,证明如上图。我们可以惊奇的
  • 2022-10-05P1823 [COI2007] Patrik 音乐会的等待
    用单调队列维护即可,注意要考虑高度相同的情况(可以记录单调队列中相同的个数)。时间复杂度为\(O(n)\)。#include<bits/stdc++.h>usingnamespacestd;#defineintlong
  • 2022-09-236th 2022/6/8 算法总结·LCA·倍增
    开头的话这个算法对于大部分图论无环图题都是必备的,应多多复习大概是对于两个点的公共祖先倍增众所周知,为了找到公共祖先,最暴力的算法就莫过于一个个往上跳,直至相遇而