倍增
gigo_64
莫看,莫看,这不是真实的我(七海脸)
溜了溜了
展开
-
st表求lca
对于st表求lca可以做到O(1)查询。对于一个欧拉序,每个点对应其第一次出现在欧拉序中的位置。然后查询区间dep的最小值,这是st表干的。完了。void dfs(int u,int faa){ dep[u]=dep[faa]+1;fa[u][0]=faa;dfn[u]=++cntdfn; fir[u]=++cntt;st[0][cntt]=u; for(int i=...原创 2019-11-09 14:42:44 · 312 阅读 · 0 评论 -
【BJWC2010】严格次小生成树【倍增】
传送门借机复习次小生成树。对于非树边查询最大边权替换更新答案。这道题不允许边权相等,那就再维护一个次大值。咕#include<bits/stdc++.h>using namespace std;#define in read()#define int long longint in{ int cnt=0,f=1;char ch=0; while(!is...原创 2019-10-23 08:22:31 · 145 阅读 · 0 评论 -
【NOIP2018】保卫王国【矩阵】【倍增】
传送门其实这件事情告诉我们:万物皆可矩阵。同样的,树形dp做一次O(n),一共n次,所以为n^2的复杂度。这样有很多分呢qwq!但是还要更好。一般来说,当我们找到一个复杂度接近正确(个p)的方法时,先考虑怎么优化。我们不应该每次都重新做一遍,而是只管那些被影响了的部分。设被强制的两个点为x,y。我们发现,在树形dp的基础上,它们会影响的答案只包括他们以及他们俩到根节...原创 2019-10-17 21:29:02 · 173 阅读 · 0 评论