题目
Time Limits: 7000 ms Memory Limits: 786432 KB
Description
胆小鬼连幸福都会害怕,碰到棉花都会受伤,有时还被幸福所伤。
——太宰治《人间失格》
回顾我的一生,一共有n个事件,每一个事件有一个幸福值p_i。
我想用n-1条线把所有的事件连起来,变成一个连通块。一条连接了事件x和事件y的线会产生min(p_x mod p_y,p_y mod p_x)的喜悦值。
日日重复同样的事,遵循着与昨日相同的惯例,若能避开猛烈的狂喜,自然也不会有悲痛的来袭。因此,我想知道连接起来之后产生喜悦值最小是多少。
Input
文件第一行有一个正整数n。
接下来n行,每行一个正整数p_i。
Output
输出只有一行,表示最小的喜悦值。
Sample Input
输入1:
4
2
6
3
11
输入2:
4
1
2
3
4
输出3:
3
4
9
15
Sample Output
输出1:
1
输出2:
0
输出3:
4
Data Constraint
对于30%的数据,保证1<=n<=10^3。
对于另外40%的数据,保证1<=p_i<=10^6。
对于100%的数据,保证1<=n<=10^5,1<=p_i<=10^7。
题解
设序列中一个点值为pi,我们可以把所有大于pi*x的p中的最小的点和i连边,这样连出来的图一定包含了这个图的最小生成树
为什么呢?
不妨设(pi,pj)不满足上述条件,那么就一定有 pi∗x<