ACM/ICPM2014鞍山现场赛D Galaxy (HDU 5073)

ACM/ICPM2014鞍山现场赛D Galaxy (HDU 5073)

大家好,又见面了,我是全栈君。

题目链接:题意:给定一条线上的点,然后能够去掉当中的m个,使剩下的到重心的距离最小,

因为重心等于距离的平均值。因此也就是求方差最小。

分析:

由于要去掉m个所以一定剩下n-m个,我们枚举这一串点的起始位置从1開始 一直枚举到m,

然后由平方和的公式展开。预处理一下前几项平方和。以及前几项的和就可以,复杂度为O(N);

代码例如以下:

#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
using namespace std;

const int maxn = 50010;

long long a[maxn];

int main()
{
    int n,m,t;
    scanf("%d",&t);
    while(t--){
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++)
            scanf("%I64d",&a[i]);
        if(n==m){
            printf("0\n");
            continue;
        }
        sort(a+1,a+n+1);
        long long sum1=0,sum2=0;
        for(int i=1;i<=n-m;i++){
            sum1+=a[i];
            sum2+=a[i]*a[i];
        }
        double mess = sum1*1.0/(n-m);
        double ans = sum2 + (n-m)*mess*mess - 2*sum1*mess;
        for(int i=1;i<=m;i++){
            sum1 = sum1-a[i]+a[n-m+i];
            sum2 = sum2 - a[i]*a[i]+a[n-m+i]*a[n-m+i];
            mess = sum1*1.0/(n-m);
            ans = min(ans,sum2 + (n-m)*mess*mess - 2*sum1*mess);
        }
        printf("%.10lf\n",ans);
    }
    return 0;
}
/***
100
3 2
-1 0 1
4 2
-2 -1 1 2
****/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116641.html原文链接:https://javaforall.net

(0)
上一篇 2022年1月18日 上午8:00
下一篇 2022年1月18日 上午9:00


相关推荐

  • 嵌入式linux kermit,嵌入式开发常用串口工具kermit使用笔记

    嵌入式linux kermit,嵌入式开发常用串口工具kermit使用笔记配置使用 kermit 一直没成功过 今天心血来潮 在 Gentoo 机器上下载安装了 kermit 折腾了半小时才从串口看到开发板启动信息 kermit 很高深的样子 以后就使用它了 1 下载安装 kermit version8 0 211 eixkermit emerge avkermit2 查看安装文件 starby ls l usr bin kermit rwxr xr

    2026年3月18日
    2
  • editormd html 转义,Markdown(editormd)语法解析成html

    editormd html 转义,Markdown(editormd)语法解析成html我们在一些网站中可以见到一款网页编辑器 markdown 这是一款功能强大的富文本编辑器 之前自己在网页上使用的时候遇到了一点点的问题 现在跟大家分享下在我们写了文章之后是需要将内容保存到数据库的 如果保存到数据库中要方便以后需改的话 那么需要保存成 markdown 语言 如果保存成 html 语言通过反向解析成 markdown 这个可能效果不是很好如果保存成 markdown 就涉及到将数据库中的数据取出

    2026年3月18日
    4
  • 关于AGP热插拔

    关于AGP热插拔其实 AGP 也是可以热插拔的 X800Pro 显卡 AGP8X 口 i815 的板子 AGP4X 口 nbsp 一口气来了 N 次 板子没烧 显卡也没烧 nbsp 但是热插入显卡之后 板子就会自动重启了 nbsp 因此 别试图通过热插拔来修复 bios 刷坏的显卡 老老实实地买一个 pci 显卡把

    2026年3月17日
    2
  • 原生js读取json文件

    原生js读取json文件1 首先编写一个 json 文件 demo json name 张三 sex 男 email name 李四 sex 男 email name 王五 sex 女 email

    2026年3月17日
    2
  • 拒绝接口裸奔!开放API接口签名验证!

    拒绝接口裸奔!开放API接口签名验证!

    2022年2月18日
    42
  • Word2Vec原理详解

    Word2Vec原理详解写在前面为了更方便读者学习,笔者下载了word2vec源码共享在云盘(google官网有时会访问不了),地址。还有关于word2vec实战的地址下面是转载内容:word2vec是Google于2013年开源推出的一个用于获取wordvector的工具包,它简单、高效,因此引起了很多人的关注。由于word2vec的作者TomasMikolov在两篇相关的论文[3,4]

    2022年5月17日
    44

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号