CF818F Level Generation
题目描述
Ivan 正在开发他自己的电脑游戏。现在他需要为他的游戏设计一些关卡。首先,对于每一关,他需要绘制一个表示该关卡结构的图。
Ivan 决定,每一关的图中要恰好有 $n_i$ 个顶点,并且边必须是双向的。在构建图时,Ivan 对一种特殊的边很感兴趣,这些边被称为桥。对于两个顶点 $u$ 和 $v$ 之间的边,如果该边在所有 $u$ 到 $v$ 的路径上都存在(并且删除该边后 $u$ 和 $v$ 会处于不同的连通块),那么这条边被称为桥。对于每一关,Ivan 想要构造一个图,其中至少一半的边都是桥,同时他还希望每个图中的边数尽可能多。
因此,Ivan 给你的任务是:给定 $q$ 个数 $n_1, n_2, ..., n_q$,对于每个 $i$,请你回答:在至少一半的边是桥的情况下,具有 $n_i$ 个顶点的图最多可以有多少条边。注意,图中不能有重边或自环。
输入格式
输入文件的第一行包含一个正整数 $q$($1 \leq q \leq 100000$),表示 Ivan 需要构造的图的数量。
接下来有 $q$ 行,第 $i$ 行包含一个正整数 $n_i$($1 \leq n_i \leq 2·10^9$),表示第 $i$ 个图中的顶点数。
注意,在 Hack 数据中你需要使用 $q=1$。
输出格式
输出 $q$ 个数字,第 $i$ 个数字表示第 $i$ 个图中在至少一半的边是桥的情况下,能够拥有的最大边数。
说明/提示
在第一个例子中,可以构造如下的图:
1. $1-2$,$1-3$;
2. $1-2$,$1-3$,$2-4$;
3. $1-2$,$1-3$,$2-3$,$1-4$,$2-5$,$3-6$。
由 ChatGPT 5 翻译