zoukankan      html  css  js  c++  java
  • LA 3708 Graveyard

    题意:给出一个圆周,这个圆周上有n个雕塑,现在加入m个雕塑,问最小的移动距离

    因为不管怎么移动,可以选择一个作为坐标原点,所以需要挪动的是n-1个

    最开始不理解白书上的式子--- 后来搜题解 http://www.cnblogs.com/wuhenqs/p/3203114.html

    pos = i*(n + m) /n

    是把这个圆周缩成周长为(n + m)的圆,然后除以n代表原来的一份有多少,再乘以份数i,得到它原来的位置

    又因为圆的周长是n+m,所以现在的pos一定是整数

    所以 距离 = |pos - floor(pos + 0.5)| ,再除以(n+m),缩成周长为1的圆,到最后输出答案的时候乘以10000就可以了

     1 #include<iostream>  
     2 #include<cstdio>  
     3 #include<cstring> 
     4 #include <cmath> 
     5 #include<stack>
     6 #include<vector>
     7 #include<map> 
     8 #include<set>
     9 #include<queue> 
    10 #include<algorithm>  
    11 using namespace std;
    12 
    13 typedef long long LL;
    14 const int INF = (1<<30)-1;
    15 const int mod=1000000007;
    16 const int maxn=1000005;
    17 
    18 int main(){
    19     int n,m;
    20     while(scanf("%d %d",&n,&m) != EOF){
    21         double pos = 0.0,ans = 0.0;
    22         for(int i = 1;i < n;i++){
    23             pos = (double) (i) / n * (n+m);
    24             ans += fabs(pos - floor(pos+0.5)) / (n+m);
    25         }
    26         printf("%.4lf
    ",ans * 10000);
    27     }
    28     return 0;
    29 }
    View Code
  • 相关阅读:
    C#8.0新特性
    C#7.0新特性
    C#6.0新特性
    C#6.0到C#8.0的新特性
    纪念博客开通的6月29日
    什么是开发中经常说的'POCO'
    什么时候用Model,什么时候用Entity?
    C#数组的 Length 和 Count()
    C#中foreach的实现原理
    Windows Server 2012 R2远程桌面默认端口修改
  • 原文地址:https://www.cnblogs.com/wuyuewoniu/p/4622046.html
Copyright © 2011-2022 走看看