2023.3.17 闲话
joke3579 不屑于称扫描线为扫描线而称之为顺着扫,orz .
早在若干年前就在多项式时间复杂度内解决 NP-Hard 问题的 joke3579 肆意锐评 —— 人类是不可能解决 NP-Hard 问题的!
我要给 joke3579 今日闲话引流:闲话 23.3.17 .
btw,不用 Kruskal 重构树的连通块重标号(封装):
struct Relabeler
{
int nxt[N], lst[N], id[N], fa[N];
int get(int x){return x == fa[x] ? x : fa[x] = get(fa[x]);}
inline void merge(int u, int v)
{
u = get(u); v = get(v);
if (u == v) return ;
nxt[lst[u]] = v; lst[u] = lst[v];
fa[v] = u;
}
inline void relabel(int n)
{
static bool uok[N];
for (int i=1; i<=n; i++) uok[nxt[i]] = true;
int cc = 0;
for (int i=1; i<=n; i++)
{
if (uok[i]) continue;
int u = i; id[u] = ++cc;
while (~nxt[u]){u = nxt[u]; id[u] = ++cc;}
}
}
inline pii range(const int& u){int _ = get(u); return make_pair(id[_], id[lst[_]]);}
inline int at(const int& u) const {return id[u];}
inline void clear(int n){iota(fa, fa+1+n, 0); memset(nxt, -1, sizeof nxt); iota(lst, lst+1+n, 0);}
Relabeler(){clear(N-1);}
};
UPD. 看 SyadouHayami 博客选中的背景色是 #66CCFF 一类的东西(因为有背景干扰我拾色器没拾到准的),于是我就把我选中的背景色改成了 #39C5BB,不过如果刻意的去注意这一点确实不很漂亮,不知道为什么,不过平时看着也没有那么不漂亮啦 .
两个点 和 的 Manhattan 距离: .
一个 Trick:拆 .
这样的话 个绝对值就可以改成 个 max .
Luogu1648 看守
给 维空间 个点,求曼哈顿距离最大的两个点的曼哈顿距离 .
, .
暴力拆对于每种情况找出最大最小直接减 可以通过 .
CF1093G Multidimensional Queries
维护 个 维点支持单点修改区间查上面那个题的问题 .
,,6s .
暴力拆对于每种情况开 个线段树按上面问题维护即可 .
时间复杂度 可以通过 .
还挺有意思的,不过看起来难扩展 .
是不是有点水了 .
以下是博客签名,正文无关
本文来自博客园,作者:yspm,转载请注明原文链接:https://www.cnblogs.com/CDOI-24374/p/17227605.html
版权声明:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议(CC BY-NC-SA 4.0)进行许可。看完如果觉得有用请点个赞吧 QwQ
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】