LA3708 Graveyard 墓地雕塑

</pre><span style="font-size:12px;">题意是原本n个墓碑均匀分布在一个周长为10000的圆周上,现在加入m个,如果要使得n+m个墓碑都均匀分布的话,那么原来的墓碑最少的移动总距离是多少。</span></h1><div><span style="font-family:微软雅黑"><span style="font-size:12px;"><span style="line-height: 20.880001068115234px;">   由样例画图可以观察到样例可以有个共同特点,就是无论加多少,原来有多少,都可以让原来有一个雕塑没有移动。我没可以吧没有移动的雕塑看作原    点,而把    其他点按逆时针标记。我们可以把距离按等比例缩小,使后来的等距为1,。接下来移动的,若没有重合,则为最优</span><span style="line-height: 20.880001068115234px;">。</span></span></span></div><div><span style="font-family:微软雅黑"><span style="font-size:12px;"><span style="line-height: 20.880001068115234px;">   </span></span></span><pre name="code" class="java">package 课后;


import java.util.Scanner;


public class la3708
{
public static void main(String[] args)
{
	int n = 0,m = 0;
	Scanner input=new Scanner(System.in);
	while(input.hasNext()==true){
		n=input.nextInt();
		m=input.nextInt();
		double ans=0.0;
		for(int i=1;i<n;i++){
			double pos=(double)i/n*(n+m);//计算每个需要移动的雕塑的坐标,注意不需要移动的为原点。
			ans += Math.abs(pos-Math.floor(pos+0.5))/(n+m);///(n+m)是把距离等比例缩小,因为距离就是原来的点到等距点的距离,至于移到那个点,完全是看离哪个近
		}
		System.out.printf("%.4lf\n",ans*10000);
	}
}
}

你可能感兴趣的:(LA3708 Graveyard 墓地雕塑)