2022.8.1 闲话
我的 B 站 20 粉丝了!
我的 B 站 20 粉丝了!
我的 B 站 20 粉丝了!
我的 B 站 20 粉丝了!
我的 B 站 20 粉丝了!
我的 B 站 20 粉丝了!
我的 B 站 20 粉丝了!
我的 B 站 20 粉丝了!
我的 B 站 20 粉丝了!
我的 B 站 20 粉丝了!
我的 B 站 20 粉丝了!
我的 B 站 20 粉丝了!
我的 B 站 20 粉丝了!
我的 B 站 20 粉丝了!
我的 B 站 20 粉丝了!
我的 B 站 20 粉丝了!
我的 B 站 20 粉丝了!
我的 B 站 20 粉丝了!
我的 B 站 20 粉丝了!
我的 B 站 20 粉丝了!
字符串匹配 Part II 我是不想写了 .
没时间了所以那个 SoyTony 大师的有趣问题先鸽几天,先放个 simple 的 .
浅谈 2D 数据结构
二维前缀和
二维前缀和 .
二维 ST 表
逐维 ST 表即可 .
struct ST2D
{
static const int L = __lg(N) + 10;
int f[N][N][L][L];
inline void reset()
{
for (int i=1; i<=n; i++)
for (int j=1; j<=m; j++) f[i][j][0][0] = a[i][j];
for (int i=1; i<=n; i++)
for (int k=1; (1<<k)<=m; k++)
for (int j=1; j+(1<<k)-1<=m; j++) f[i][j][0][k] = max(f[i][j][0][k-1], f[i][j+(1<<(k-1))][0][k-1]);
for (int k1=1; (1<<k1)<=n; k1++)
for (int i=1; i+(1<<k1)-1<=n; i++)
for (int k2=0; (1<<k2)<=m; k2++)
for (int j=1; j+(1<<k2)-1<=m; j++) f[i][j][k1][k2] = max(f[i][j][k1-1][k2], f[i+(1<<(k1-1))][j][k1-1][k2]);
}
inline int query(int x0, int y0, int x1, int y1)
{
int x = __lg(x1 - x0 + 1), y = __lg(y1 - y0 + 1);
return max({f[x0][y0][x][y], f[x0][y1-(1<<y)+1][x][y], f[x1-(1<<x)+1][y0][x][y], f[x1-(1<<x)+1][y1-(1<<y)+1][x][y]});
}
};
二维 Hash
类似的,逐维 Hash 即可 .
Code .
二维树状数组
类似的,逐维树状数组即可 .
struct Fenwicktree2D
{
inline int lowbit(int x){return x&-x;}
int A[N][N], B[N][N], C[N][N], D[N][N];
void add_base(int n, int m, int x, int y, int key)
{
for (int i=x; i<=n; i+=lowbit(i))
for (int j=y; j<=m; j+=lowbit(j)){A[i][j] += key; B[i][j] += key*x; C[i][j] += key*y; D[i][j] += key*x*y;}
}
int query(int x,int y)
{
int ans = 0;
for (int i=x; i; i&=i-1)
for (int j=y; j; j&=j-1) ans += 1ll * (x+1) * (y+1) * A[i][j] - (y+1) * B[i][j] - (x+1) * C[i][j] + D[i][j];
return ans;
}
void add(int a, int b, int x, int y, int key){add(n, m, a, b, key); add(n, m, x+1, b, -key); add(n, m, a, y+1, -key); add(n, m, x+1, y+1, key);}
};
二维线段树
不会代码实现 .
四分树
每次一个矩形分四份即可,单次 \(O(n)\) .
线段树套线段树
对 \(x\) 轴建立一颗线段树,然后在每个节点上面再建一棵 \(y\) 轴线段树,这样操作的时候先找到 \(x\) 轴的线段树节点,然后再在 \(y\) 轴的线段树上进行修改或者查找即可 .
单次 \(O(\log n)\) .
以下是博客签名,正文无关
本文来自博客园,作者:Jijidawang,转载请注明原文链接:https://www.cnblogs.com/CDOI-24374/p/16541991.html
版权声明:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议(CC BY-NC-SA 4.0)进行许可。看完如果觉得有用请点个赞吧 QwQ