zoukankan      html  css  js  c++  java
  • HDU 5073

    http://acm.hdu.edu.cn/showproblem.php?pid=5073

    这题的关键是要把p点减重心位置 的 平方的那个式子展开,就可以O(n),开始ans初始化为1e18一直wa,改成1e19就A了

    最大的部分是连续的,头尾指针一起移动就可以

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <map>
    #include <algorithm>
    using namespace std;
    
    typedef __int64 ll;
    
    ll a[50005], sum[50005], sum2[50005];
    
    int main(){
        int T;
        scanf("%d", &T);
        while(T--){
            ll n, k;
            scanf("%I64d %I64d", &n, &k);
            for(int i = 1; i <= n; i++)
                scanf("%I64d", &a[i]); 
            if(n == k || k == n - 1){
                printf("0.0000000000
    ");
                continue;
            }
            sort(a + 1, a + n + 1);
            memset(sum, 0, sizeof(sum));
            memset(sum2, 0, sizeof(sum2)); 
            sum[1] = a[1]; 
            sum2[1] = a[1] * a[1]; 
            for(int i = 2; i <= n; i++){
                sum[i] = sum[i - 1] + a[i];
                sum2[i] = sum2[i - 1] + a[i] * a[i]; 
            }
            double ans = 1e19; 
            for(int front = 1, rear = n - k; rear <= n; front++, rear++){
                ll av = sum[rear] - sum[front - 1]; 
                double res=  (n - k) * (sum2[rear] - sum2[front - 1]) + 1.0 * av * av - 2.0 * av * (sum[rear] - sum[front - 1]); 
                ans = min(ans, res); 
            }
            printf("%.10lf
    ", ans / (n - k));
        }
        return 0;
    }
    View Code
  • 相关阅读:
    Tom&Jerry_team——测试总结
    OMCP sprint 第7天
    OMCP sprint 第6天
    OMCP sprint 第5天
    OMCP sprint 第4天
    OMCP sprint 第3天
    OMCP sprint 第2天
    SQL SERVER 如何恢复bak备份文件
    Ext JS
    Linnx环境下常用命令
  • 原文地址:https://www.cnblogs.com/xiaohongmao/p/4052124.html
Copyright © 2011-2022 走看看