您的位置:首页 > 其它

LA 3708(贪心)

2015-01-24 23:21 316 查看
题意:有n个雕塑等距放在一个周长为10000的圆上,现在要再放m个雕塑,要使所有雕塑仍然保持等距,问n个雕塑最少移动总距离是多少。

题解:让n个中的一个雕塑不动,作为原点,那么剩下的雕塑需要移动的位置就确定了,然后把圆周长按比例缩小为(n + m),只要把每个雕塑移动到和它最近的整数点位置就可以了。然后再将所有移动的距离按圆周长是1的比例缩小加起来。结果放大10000倍。

#include <stdio.h>
#include <math.h>

int main() {
int n, m;
while (scanf("%d%d", &n, &m) == 2) {
double res = 0;
for (int i = 1; i < n; i++) {
double pos = double(i) / n * (n + m);
res += fabs(pos - floor(pos + 0.5)) / (n + m);
}
printf("%.4lf\n", res * 10000);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  uva