SP26 BSHEEP - Build the Fence

题目描述

春天开始时,所有的羊都会迁移到山上更高的牧场。如果有成千上万只羊,把它们聚集到一个地方是非常值得的。但羊不喜欢离开它们的草地。请帮助牧羊人,为他建造一个能围住所有羊的围栏。围栏的长度应尽可能短!假设羊小到可以忽略不计,并且它们不会移动。有时会有几只羊站在同一个位置。如果只有一只羊,它可能快要死了,所以根本不需要围栏……

输入格式

第一行一个整数 $t$,表示测试组数。 接下来对于每组数据: 第一行一个整数 $n$,表示羊的数量。 接下来 $n$ 行,每行两个整数 $x_i,y_i$,表示第 $i$ 只羊的坐标。 每组数据之间以一个空行隔开。

输出格式

对于每组数据,输出两行: 第一行一个实数 $o$,表示围栏的周长,四舍五入保留 $2$ 位小数。 第二行 $k$ 个整数 $p_1,p_2,\dots,p_k$ ,表示位于围栏角落处的羊的编号。第一只应是位于最下方且尽可能靠左的羊,其他的应按逆时针顺序输出。忽略所有站在同一位置的羊,只保留在输入文件中首次出现的那只。输出的羊的数量应尽可能少。 每组数据的输出之间以一个空行隔开。

说明/提示

**警告:输入/输出数据量大,使用某些语言时请小心。** - 对于 $100\%$ 的数据,$1\le t\le 100$,$1\le n \le 10^5$。 - 所有坐标均为整数,且 $-10000\le x_i,y_i \le 10000$。 由 DeepSeek-V3.2 翻译