题目链接

题意:

一共有N个星球,其星球围绕着其中心旋转,现在你可以去掉最多K个星球,使得其最后的:∑ni=1d2i\sum_{i=1}^n d_i^2最小 其中di表示第i个点到中心的距离。当然随着点的去掉,中心一定是不同的。

思路:

1.首先设此时的中心的位置为x,那么上述式子为: ∑ni=1(ai−x)2\sum_{i=1}^n (a_i-x)^2 展开之后得到 n∗x2−2∗x∗∑ni=1ai+∑ni=1a2i n*x^2 -2*x*\sum_{i =1}^n a_i +\sum_{i=1}^n a_i^2 。现在我们要求这个的最小值,发现这是一个一元二次函数,开口朝上,最小值就在对称轴处,为 ∑ni=1ain \frac{\sum_{i=1}^n a_i}{n} 不同的只是,随着去掉一些点n的个数会变.

2.根据上面的式子我们发现中心x即为n个数的平均值处.进而发现 ∑ni=1(ai−x)2\sum_{i=1}^n (a_i-x)^2其实是一个方差.
根据方差存在的性质,点数越少,越密集,方差值越小,越稳定.从而发现其实这个题一定是要去掉k个点才能最优的,并且去掉的点要放在中心位置使得对答案没有贡献.

3.为了使点数更密集,那么我们留下的n-k个点一定要是连续的了,我们就对点排序,然后维护两个前缀和求个最优即可.

这个过程有很多坑点,比如当n == k时

#include<bits/stdc++.h>
using namespace std;
const int maxn = 5e5+5;
typedef long long ll;
int n,k;
ll pos[maxn],sum1[maxn],sum2[maxn];
const ll inf = 1e18;
int main()
{int _;cin>>_;while(_--){scanf("%d %d",&n,&k);for(int i = 1;i <= n;++i) scanf("%lld",&pos[i]);sort(pos+1,pos+1+n);//排序 sum1[0] = sum2[0] = 0;for(int i = 1;i <= n;++i){sum1[i] = sum1[i-1]+pos[i];sum2[i] = sum2[i-1]+pos[i]*pos[i];}double ans = inf;for(int i = n - k;i <= n;++i){ll s1 = sum1[i] - sum1[i-(n-k)];ll s2 = sum2[i] - sum2[i-(n-k)];double mid = s1*1.0/(n-k);double I = (n-k)*mid*mid - 2*mid*s1 + s2;ans = min(I,ans); }if(n == k) ans = 0;//坑点 printf("%.10f\n",ans);}return 0;
}

方差性质:
1.方差刻画了随机变量的取值对于其数学期望的离散程度。(标准差、方差越大,离散程度越大)
2.若X的取值比较集中,则方差D(X)较小,若X的取值比较分散,则方差D(X)较大。
3.点数越少,越密集,方差值越小,越稳定
各种分布

HDU - 5073 Galaxy 思维+方差性质相关推荐

  1. HDU 5073 Galaxy (2014鞍山现场赛D题)

    题目链接:HDU 5073 Galaxy 题意:在一维的坐标系里,给出N个点坐标,转动K个点,使转动后这个星系的的惯性最小(根据题意惯性最小也就是 求所有星星到星系中心的距离最小,这个可以理解成方差最 ...

  2. 011 数学期望、方差及方差性质

    011 数学期望.方差及方差性质

  3. hdu 2014鞍山赛区 5073 Galaxy

    题意:就是给你 n 个数,代表n个星球的位置,每一个星球的重量都为 1 ! 开始的时候每一个星球都绕着质心转动,那么质心的位置就是所有的星球的位置之和 / 星球的个数 现在让你移动 k 个星球到任意位 ...

  4. matlab 使用小波变换和方差性质处理带状噪声

    本文对slena.jpg进行了单层和多层的分解与重构,利用方差或小波变换的性质对带状噪声进行了去除.实验处理的图片为slena.jpg 代码如下: 基于小波变换性质的带状噪声去除 通过小波变换分离出竖 ...

  5. HDU 6029(思维)

    传送门 题面: Graph Theory Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/O ...

  6. HDU 6168 Numbers 思维 水题

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=6168 题目描述: 定义数组b是由数组a每两项的和组成的,现在将数组A, B混在一起给你, 筛出数组A ...

  7. HDU 6264(思维)

    传送门 题面: Problem A. Super-palindrome You are given a string that is consistedof lowercase English alp ...

  8. E - 连连看 HDU - 1175(思维的深搜)

    "连连看"相信很多人都玩过.没玩过也没关系,下面我给大家介绍一下游戏规则:在一个棋盘中,放了很多的棋子.如果某两个相同的棋子,可以通过一条线连起来(这条线不能经过其它棋子),而且线 ...

  9. HDU - 7029 Median 思维

    传送门 文章目录 题意: 思路: 题意: 给你1,2,...,n1,2,...,n1,2,...,n一共nnn个数,你需要将其分成mmm组,使得每组的中位数为bib_ibi​,保证bib_ibi​互不 ...

最新文章

  1. lisp语言cond和if套用_在'if'语句中设置多行条件的样式?
  2. 【项目实战】多场景下的图表可视化表达
  3. python 类 实例id递增_Python Django 模板类中 系统默认的主键ID自增,不会随着模板实例的删除而重置问题...
  4. Java后端WebSocket的Tomcat实现(转载)
  5. AI浪潮席卷而来,现在加入还来得及吗?
  6. java impliments,dubbo使用GenericService泛化调用
  7. python输出星号_Python的星号(*、**)的作用
  8. 精选5个酷毙的Python工具
  9. python抽奖滚动界面_Python使用Tkinter实现转盘抽奖器的步骤详解
  10. Python机器学习:线型回归法02最小二乘法
  11. 随想录(程序员的缺点)
  12. AttributeError: 'str' object has no attribute 'decode'
  13. 【5分钟 Paper】Deep Recurrent Q-Learning for Partially Observable MDPs
  14. c语言病房管理系统,病房全数字呼叫系统-医疗病房管理系统智能呼叫对讲系统...
  15. Windows11下Edge浏览器登录工行农行并使用K宝U盾
  16. 计算机如何设置桌面文件筐,360安全桌面怎么设置文件筐 自定义分框其实非常简单...
  17. 计算机社团打字比赛规则,金手指打字比赛策划(最终版)
  18. USB扫码枪二维码读取(二)——MFC篇
  19. 云渲染解决方案,CPU渲染,GPU渲染
  20. react-player一个很好用的直播组件,可以播放视频等等

热门文章

  1. python编程自学网站你知道几个?
  2. 网上的一些日语教学视频合集
  3. 怎么在编程中找到快乐,并得到持久的动力?
  4. IOS如何给VIEW设置2个圆角?set cornerRadius for only top-left and top-right corner of a UIVIEW
  5. python编写base64加密解密
  6. Html5之formaction属性
  7. 如何部署企业VoIP电话系统
  8. 常用的Windows网络方面的命令有哪些?(转.往事随风)
  9. 两天签约148个项目,投资总额超900亿,这个领域,马上要有大动作!
  10. 银行木马BANLOAD加入FIFA世界杯足球赛