Hdu 5073 Galaxy 精度问题
思路: 其实求解很简单直接说解法,移动K个后 上下的角动量最小,能肯定是相连的(n-k)个,至于为什么 你自己好好想想(easy);
对于一些等质量的质点中心在 所在位置和除以点的个数
average=sum[l,l+(n-k)-1]/(n-k);
一个点的值: (pi-average)* (pi-average)
也就是 pi^2+avery^2 - 2*pi*average
多个点相加也就是 ∑pi^2+(n-k)*sum*sum/(n-k)/(n-k) - 2*∑pi*sum/(n-k);
= ∑pi^2+(n-k)*sum*sum/(n-k)/(n-k) - 2*sum*sum/(n-k);
= ∑pi^2 - sum*sum/(n-k);
所以要处理一下 ”普通和“,“平方和” 就好了
但是这个卡精度:我的做法 每次比较 (n-k)*∑pi^2 - sum*sum
剩下最小的 再除以(n-k) 就好了
代码.cpp
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <iostream>
#include <cmath>
#include <map>
#include <set>
#include <cstring>
using namespace std;
typedef long long LL;
LL p[50005];
using namespace std;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n,k;
scanf("%d%d",&n,&k);
for(int i = 1; i<=n; i++)scanf("%I64d",p+i);
if(n==k||k==n-1)
{
printf("%d\n",0);
continue;
}
sort(p+1,p+n+1);
LL sum = 0;
LL SUM = 0;
for(int i = 1; i<=n-k; i++)
{
sum += p[i];
SUM += p[i] * p[i];
}
LL need=n-k;
LL min_ans = need*SUM - sum*sum;
for(int i = n-k+1,j=1; i <= n; i++,j++)
{
sum = sum + p[i] - p[j];
SUM = SUM + p[i]*p[i] - p[j]*p[j];
LL now = need*SUM - sum*sum;
min_ans=min(min_ans,now);
}
//LL tmp=min_ans/need;
// double t=min_ans%need;
// double ans=tmp+t/(double)need;
printf("%.11f\n",(double)min_ans/(double)need);
}
return 0;
}
Hdu 5073 Galaxy 精度问题的更多相关文章
- HDU 5073 Galaxy (2014 Anshan D简单数学)
HDU 5073 Galaxy (2014 Anshan D简单数学) 题目链接http://acm.hdu.edu.cn/showproblem.php?pid=5073 Description G ...
- hdu 5073 Galaxy(2014acm鞍山亚洲分部 C)
主题链接:http://acm.hdu.edu.cn/showproblem.php? pid=5073 Galaxy Time Limit: 2000/1000 MS (Java/Others) ...
- hdu 5073 Galaxy(2014acm鞍山亚洲分部 D)
主题链接:http://acm.hdu.edu.cn/showproblem.php? pid=5073 Galaxy Time Limit: 2000/1000 MS (Java/Others) ...
- 2014 Asia AnShan Regional Contest --- HDU 5073 Galaxy
Galaxy Problem's Link: http://acm.hdu.edu.cn/showproblem.php?pid=5073 Mean: 在一条数轴上,有n颗卫星,现在你可以改变k颗 ...
- HDU 5073 Galaxy(2014鞍山赛区现场赛D题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5073 解题报告:在一条直线上有n颗星星,一开始这n颗星星绕着重心转,现在我们可以把其中的任意k颗星星移 ...
- ACM学习历程—HDU 5073 Galaxy(数学)
Description Good news for us: to release the financial pressure, the government started selling gala ...
- hdu 5073 Galaxy(2014 鞍山现场赛)
Galaxy Time Limit: 2000/1000 MS (J ...
- HDU 5073 Galaxy(Anshan 2014)(数学推导,贪婪)
Galaxy Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) Total S ...
- hdu 5073 Galaxy 数学 铜牌题
0.5 题意:有n(n<=5e4)个质点位于一维直线上,现在你可以任意移动其中k个质点,且移动到任意位置,设移动后的中心为e,求最小的I=(x[1]-e)^2+(x[2]-e)^2+(x[3]- ...
随机推荐
- 多线程——实现Callable接口
前两篇博客(多线程--继承Thread类.多线程--实现Runnable接口 )介绍了java使用线程的两种方法.这篇博客继续介绍第三种方法--实现Callable接口. 先说一下Runnable和C ...
- data URI scheme及其应用
data URI scheme通俗的来讲就是将一张图片直接塞到HTML中而不是通过HTTP请求去获取.这样从表面上看会降低一次HTTP的请求,实现了对于网页的优化(只是看了其它一些文章data URI ...
- 呜呼!Node.js是什么?
近期看到非常多站点都使用node.js.開始感到非常好奇.就開始推測这是个什么东西,大概就是个js文件吧,所以開始根本 没有在意,可是越感觉就认为越不正确劲,为什么大家都在用它呢?所以我决定搞个明确. ...
- codeforces.com/contest/325/problem/B
http://codeforces.com/contest/325/problem/B B. Stadium and Games time limit per test 1 second memory ...
- delphi 对抗任务管理器关闭(提升进程到Debug模式,然后设置进程信息SE_PROC_INFO)
[delphi] view plain copy program Project1; uses Windows; {$R *.res} function MakeMeCritical(Yes: Boo ...
- C语言函数参数压栈顺序为何是从右到左?(从左向右的话,碰到printf的会陷入死循环)
上学期学习了汇编语言,并在操作系统实验中使用了汇编+C语言混合编程,中间也了解了一些C语言与汇编语言的对应关系. 由于汇编语言是底层的编程语言,各种函数参数都要直接控制栈进行存取,在混合编程中,要用汇 ...
- [Android]Eclipse的使用
1.取消Eclipse拼写检查 General -> Editors -> Text Editors -> Spelling 取消enable spell checking 前面的勾 ...
- SpringMVC存取Session的两种方法
方法一:使用servlet-api @Controller public class ManagerController { @Resource private ManagerService mana ...
- 如何开发auto complete 智能提示功能
目录(?)[+] 如何开发auto complete 智能提示功能 最近网上好像流传用redis实现,其实智能提示和用什么存储关系不大 07年,我过一个类似的项目 我有几千个名字,随着用户在输入框中不 ...
- 【Unity 3D】学习笔记三十七:物理引擎——碰撞与休眠
碰撞与休眠 上一篇笔记说过,当给予游戏对象刚体这个组件以后,那么这个组件将存在碰撞的可能性.一旦刚体開始运动,那么系统方法便会监视刚体的碰撞状态.一般刚体的碰撞分为三种:进入碰撞,碰撞中,和碰撞结束. ...