zoukankan      html  css  js  c++  java
  • LA 3708 && POJ 3154 Graveyard (思维)

    题意:在周长为10000的圆上等距分布着n个雕塑,现在又加入m个,现在让m+n个等距分布,那就得移动一些原有的雕塑,问你移动的最少总距离是多少。

    析:首先我们可以知道,至少有一个雕塑是可以不用移动的,那么我们以那修个没有移动的雕塑为原点建立坐标。现在问题就转化为把剩下的移动到离它最近的位置(这个位置是放入m个雕塑之后的位置),那么这个距离就应该是最短的。

    代码如下:

    #include <cstdio>
    #include <iostream>
    #include <cstring>
    #include <cmath>
    
    using namespace std;
    typedef long long LL;
    const int maxn = 10000;
    
    int main(){
        int n, m;
        while(~scanf("%d %d", &n, &m)){
            double ans = 0.0;
            for(int i = 1; i < n; ++i){// 第0个是不移动的
                double pos = (double)i / n * (n+m);
                ans += fabs(pos - floor(pos+0.5)) / (m+n);// pos 四舍五入
            }
            printf("%.4lf
    ", ans*10000);
        }
        return 0;
    }
    
  • 相关阅读:
    jquery操作删除元素
    js添加页面元素
    jQuery方法
    form表单的几种提交方式
    Comparable和Comparator
    快速失败和安全失败
    Junit 测试基础
    Spring 之AOP 面向切面编程
    spring 的核心接口
    Nginx
  • 原文地址:https://www.cnblogs.com/dwtfukgv/p/5527424.html
Copyright © 2011-2022 走看看