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;
    }
    
  • 相关阅读:
    【并查集学习笔记】------迟来的总结
    【Ant Trip】题解
    【数星星 Stars】题解
    【From Hero to Zero】题解
    营救 【题解】
    js获取浏览器视窗尺寸
    js基础拖拽二
    js基础拖拽一
    js检测浏览器flash支持
    js操作cookie
  • 原文地址:https://www.cnblogs.com/dwtfukgv/p/5527424.html
Copyright © 2011-2022 走看看