题意 一块 \(h ∗ w\) 的区域,存在障碍.空地.\(n\) 个建筑,从一个建筑到另一个建筑的花费为:路径上最长的连续空地的长度. \(q\) 次询问:从建筑 \(s_i\) 到 \(t_i\) 的最小花费. \(h, w \le 2 \times 10^3 ,n, q \le 2 \times 10^5\) 题解 对于任意两个建筑把它们之间的只走空地的最短路长度作为权值,然后做最小生成树. 如果搞出了最小生成树,那么就只需在 \(kruskal\) 重构树上求 \(LCA\) 就行了,因…
题目链接 \(Description\) 有一个\(n\times n\)的正方形网格,上面有若干障碍点.\(q\)次询问,每次询问把一个正方形箱子从\((x1,y1)\)推到\((x2,y2)\) ,不能接触障碍点且不超出边界,箱子的边长最大能是多少. \(n\leq1000,q\leq3\times10^5\). \(Solution\) 我们可以直接将非障碍点看做顶点,向周围四个非障碍点连边.这样是要求一棵最大生成树. 从每个障碍点做八连通BFS,可以得到通过每个非障碍点位置的最大直径.…
水壶 本来从不写针对某题的题解,但因为自己实在是太蠢了,这道题也神TM的恶心,于是就写篇博客纪念一下 H水壶 时间限制 : 50000 MS 空间限制 : 565536 KB 评测说明 : 2s,512m 问题描述 \(JOI\)君所居住的IOI市以一年四季都十分炎热著称. \(IOI\)市是一个被分成\(H*W\)块区域的长方形,每个区域都是建筑物.原野.墙壁之一.建筑物的区域有\(P\)个,编号为\(1...P\). $ JOI$君只能进入建筑物与原野,而且每次只能走到相邻的区域中,且不能移…
kruskal重构树 Description 给你N个点的无向图 (1 <= N <= 15,000),记为:1-N. 图中有M条边 (1 <= M <= 30,000) ,第j条边的长度为: d_j ( 1 < = d_j < = 1,000,000,000). 现在有 K个询问 (1 < = K < = 15,000). 每个询问的格式是:A B,表示询问从A点走到B点的所有路径中,最长的边最小值是多少? Input 第一行: N, M, K. 第2..…
4242: 水壶 Time Limit: 40 Sec  Memory Limit: 256 MBSubmit: 427  Solved: 112[Submit][Status][Discuss] Description JOI君所居住的IOI市以一年四季都十分炎热著称. IOI市是一个被分成纵H*横W块区域的长方形,每个区域都是建筑物.原野.墙壁之一.建筑物的区域有P个,编号为1...P. JOI君只能进入建筑物与原野,而且每次只能走到相邻的区域中,且不能移动到市外. JOI君因为各种各样的事…
模板题,练练手~ Code: #include <cstdio> #include <algorithm> #define N 80000 #define setIO(s) freopen(s".in","r",stdin) using namespace std; namespace tree { int hd[N],to[N],nex[N],edges; int fa[N],top[N],siz[N],dep[N],son[N]; voi…
Kruskal重构树裸题, Sunshine互测的A题就是Kruskal重构树,我通过互测了解到了这个神奇的东西... 理解起来应该没什么难度吧,但是我的Peaks连WA,,, 省选估计要滚粗了TwT #include<cstdio> #include<cstring> #include<algorithm> #define for1(i,a,n) for(int i=(a);i<=(n);i++) #define for2(i,a,n) for(int i=(a…
3551: [ONTAK2010]Peaks加强版 题意:带权图,多组询问与一个点通过边权\(\le lim\)的边连通的点中点权k大值,强制在线 PoPoQQQ大爷题解传送门 说一下感受: 容易发现一定选最小生成树上的边,然后用到了一个神奇的东西 Kruskal重构树 进行Kruskal过程中,每条边用一个点代替,左右儿子分别是连的两个点的当前的父亲 这样就形成了一棵树,叶子都是原图上的点,其他都是原图上的边 深度越小的点对应的边权值越大 两点路径上的权值不变 这样的话,与一个点通过权值\(\…
强制在线 kruskal重构树,每两点间的最大边权即为其lca的点权. 倍增找,dfs序对应区间搞主席树 #include<cstdio> #include<cstring> #include<iostream> #include<cmath> #include<algorithm> #define N 100005 #define M 500005 using namespace std; int l[2*N],r[2*N],cnt,num_c…
3732: Network Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2812  Solved: 1363[Submit][Status][Discuss] Description 给你N个点的无向图 (1 <= N <= 15,000),记为:1…N. 图中有M条边 (1 <= M <= 30,000) ,第j条边的长度为: d_j ( 1 < = d_j < = 1,000,000,000). 现在有 K个询问…