题目名称 3787. 空图
输入输出 EmptyGraph.in/out
难度等级 ★★☆
时间限制 1000 ms (1 s)
内存限制 256 MiB
测试数据 10
题目来源 Gravatarlihaoze 于2022-11-01加入
开放分组 全部用户
提交状态
分类标签
二分答案 图论
分享题解
通过:1, 提交:5, 通过率:20%
Gravatarlihaoze 100 0.495 s 4.90 MiB C++
GravatarHeSn 80 6.766 s 36.25 MiB C++
GravatarHeSn 0 2.455 s 7.26 MiB C++
Gravatardsn 0 5.349 s 28.62 MiB C++
Gravatardsn 0 9.814 s 15.37 MiB C++
本题关联比赛
4043级NOIP2022欢乐赛3rd
关于 空图 的近10条评论(全部评论)
我呃呃,数组开小了,100分没了(
GravatarHeSn
2022-11-05 08:59 1楼

3787. 空图

★★☆   输入文件:EmptyGraph.in   输出文件:EmptyGraph.out   简单对比
时间限制:1 s   内存限制:256 MiB

【题目描述】

给定一个序列 $a_1, a_2, \dots, a_n$ ,进行最多 $k$ 次赋值操作,然后用这个序列构造一个无向带权完全图,任意一对节点 $(l, r)$ 的边权为 $\displaystyle \min_{l \le i \le r} (a_i)$,求出最长的直径。


对于每次赋值操作:选择一个下标 $1 \le i \le n$,一个正整数 $1 \le x \le 10^9$,然后令 $a_i = x$。

图的直径:若要求得一张图的直径,首先要求得任意两点之间的最短路径,在这些所有的最短路径中,取其长度最长者,即是这张图的直径。

【输入格式】

第 $1$ 行,包括两个整数 $n, k$。 第 $2$ 行,包括 $n$ 个整数 $a_i$。

【输出格式】

输出最长直径 $ans$。

【样例输入1】

3 1
2 4 1

【样例输出1】

4

【样例输入2】

3 2
179 17 1000000000

【样例输出2】

1000000000

【样例解释】

对于样例一,一种最优序列为 $\{2, 4, 5\}$。 

G 1 1 3 3 1--3 2 2 2 1--2 2 2--3 4

$\mathrm{d}(1, 2) = \mathrm{d}(1, 3) = 2, \mathrm{d}(2, 3) = 4$,所以直径为 $\max(2, 2, 4) = 4$。

【数据规模与约定】

对于 $100\%$ 的数据,$1 \le n \le 2 \times 10^6, 1 \le k \le 1000, 1 \le a_i \le 1 \times 10^9$