题目链接:https://vjudge.net/contest/132704#problem/D
题意:一个长度为10000的园上,均匀分布n个雕塑,现在要加入m个雕塑,这样原先的就可能会移动,求移动总和最小。
分析:
不防,以一个点为定点,总长度为(n+m),这里的距离是等比例缩小了的,原先的位置就是 i/n*(n+m);那么他要到的位置自然是最近的位置,floor(pos+0.5),(四舍五入)。
1 #include <bits/stdc++.h> 2 3 using namespace std; 4 5 int main() 6 { 7 int n,m; 8 while(~scanf("%d%d",&n,&m)) { 9 double ans = 0; 10 11 for(int i=1;i<n;i++) { 12 double pos = (double)i/n*(n+m); //原来的位置 13 ans +=fabs(pos-floor(pos+0.5))/(n+m); 14 } 15 16 printf("%.4f ",ans*10000); 17 18 } 19 20 return 0; 21 }