由于小美对图论十分感兴趣,因此小美希望创建一个属于自己的无向图。他有一个长度为 n 的数组 a ,他认为一对数字 i, j 是好的当且仅当: , j(1 ≤ i < j ≤ n) 同时 i-j < a_i - a_j 。 小美创建图的方式则是:对于任意一个点对 u, v(1 ≤ u, v ≤ n) ,如果 u,v 是一对好的数字,则他会在 u,v 之间连上一条无向边。 现在小美想知道,他所创建出的图有多少个极大连通块。由于图中的边数过多他数不过来,因此他想请你帮他算一算。 对于图上的两个点,如果它们之间有边相连,则称他们位于同一个连通块里。对于一个连通块,如果其已经无法再加入更多的点,则称其为极大连通块。
每个测试文件均包含多组测试数据。第一行输入一个整数 T(1≤ T≤ 100) 代表数据组数,每组测试数据描述如下: 第一行输入一个整数 n(1 ≤ n ≤ 2 × 10^5) ,表示数组 a 的长度。 第二行输入 n 个正整数 a_1, a_2, ..., a_n(1 ≤ a_i ≤ 10^9) ,表示数组。 除此之外,保证单个测试文件的 n 之和不超过 2 × 10^5 。
对于每组测试数据: 输出一行一个正整数表示他的图中连通块的个数。
2 4 3 3 4 6 5 1 2 3 4 5
2 5
考点:数组 · 图 · 前缀和
数据规模 n ≤ 200000 | 限制 1 秒 / 256MB | 标准输入输出
推荐方向:图
把关系抽象成点与边,再按问的类型选遍历/最短路/连通性算法。
思路框架(图 通法 · 非本题专属)
实现要点:注意是有向图还是无向图,无向图加边记得双向。
复杂度:时间 O(V+E) 遍历 / O(E log V) Dijkstra | 空间 O(V+E)
该范式的通法易错点
对照本题
样例 1
2 / 4 / 3 3 4 6 / 5 / 1 2 3 4 52 / 5解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2025年春招-美团-算法岗笔试。