hdu 5073 Galaxy(2014acm鞍山亚洲分部 C)
主题链接:http://acm.hdu.edu.cn/showproblem.php?
pid=5073
Galaxy
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)
Total Submission(s): 768 Accepted Submission(s): 179
Special Judge

To be fashionable, DRD also bought himself a galaxy. He named it Rho Galaxy. There are n stars in Rho Galaxy, and they have the same weight, namely one unit weight, and a negligible volume. They initially lie in a line rotating around their center of mass.
Everything runs well except one thing. DRD thinks that the galaxy rotates too slow. As we know, to increase the angular speed with the same angular momentum, we have to decrease the moment of inertia.
The moment of inertia I of a set of n stars can be calculated with the formula

where wi is the weight of star i, di is the distance form star i to the mass of center.
As DRD’s friend, ATM, who bought M78 Galaxy, wants to help him. ATM creates some black holes and white holes so that he can transport stars in a negligible time. After transportation, the n stars will also rotate around their new center of mass. Due to financial
pressure, ATM can only transport at most k stars. Since volumes of the stars are negligible, two or more stars can be transported to the same position.
Now, you are supposed to calculate the minimum moment of inertia after transportation.
For each test case, the first line contains two integers, n(1 ≤ n ≤ 50000) and k(0 ≤ k ≤ n), as mentioned above. The next line contains n integers representing the positions of the stars. The absolute values of positions will be no more than 50000.
2
3 2
-1 0 1
4 2
-2 -1 1 2
0
0.5
pid=5080" target="_blank" style="color:rgb(26,92,200); text-decoration:none">5080
pid=5079" target="_blank" style="color:rgb(26,92,200); text-decoration:none">5079
5077 5076pid=5073" style="color:rgb(26,92,200); text-decoration:none">Statistic
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define MAXN 50100
using namespace std;
int T,N,K;
int pos[MAXN],sum[MAXN],x[MAXN],First,Last;
double DL,DR,mass;
int PL,PR,need;
double ans,NowI;
double GetNext(){
double ret=NowI;
double pmass=mass;
mass=(sum[Last+1]-sum[First]+0.0)/need;
NowI+=-(pmass-pos[First])*(pmass-pos[First])+(mass-pos[Last+1])*(mass-pos[Last+1]);
NowI+=(mass-pmass)*(mass-pmass)*(need-1);
DL-=(pmass-pos[First]);
Last++;First++;
int t=PL-First+1;
NowI+=2*DL*(mass-pmass);
DL+=(mass-pmass)*t;
PL++;
while(PL<=N && pos[PL]<=mass){
DL+=fabs(mass-pos[PL]);
DR-=fabs(pmass-pos[PL]);
NowI+=(mass-pos[PL])*(mass-pos[PL]);
NowI-=(pmass-pos[PL])*(pmass-pos[PL]);
NowI-=(mass-pmass)*(mass-pmass);
PL++;
}
NowI+=2*(pmass-mass)*DR;
DR+=(pos[Last]-mass);
PL--;
DR-=(mass-pmass)*(Last-(PL+1));
return NowI;
}
int main(){
// freopen("in.txt","r",stdin);
scanf("%d",&T);
while(T--){
scanf("%d%d",&N,&K);
for(int i=0;i<N;i++)
scanf("%d",&pos[i]);
sort(pos,pos+N);
sum[0]=pos[0];
for(int i=1;i<N;i++)
sum[i]=sum[i-1]+pos[i];
need=N-K;ans=0;PL=0;
if(N==1 || need <2 ){
puts("0.000000000000");
continue;
}
double kkk=sum[need-1]*1.0/need;First=0;Last=need-1;
DL=0;PL=0;DR=0;NowI=0;
for(int i=0;i<need;i++){
NowI+=(kkk-pos[i])*(kkk-pos[i]);
if(pos[i]<=kkk){
PL=i;
DL+=(kkk-pos[i]);
}
else
DR+=(pos[i]-kkk);
}
mass=kkk;
ans=NowI;
while(Last<N-1){
GetNext();
ans=min(ans,NowI);
}
printf("%.12lf\n",ans);
}
}
hdu 5073 Galaxy(2014acm鞍山亚洲分部 C)的更多相关文章
- hdu 5073 Galaxy(2014acm鞍山亚洲分部 D)
主题链接:http://acm.hdu.edu.cn/showproblem.php? pid=5073 Galaxy Time Limit: 2000/1000 MS (Java/Others) ...
- HDU 5073 Galaxy(2014鞍山赛区现场赛D题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5073 解题报告:在一条直线上有n颗星星,一开始这n颗星星绕着重心转,现在我们可以把其中的任意k颗星星移 ...
- 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(2014 鞍山现场赛)
Galaxy Time Limit: 2000/1000 MS (J ...
- 2014 Asia AnShan Regional Contest --- HDU 5073 Galaxy
Galaxy Problem's Link: http://acm.hdu.edu.cn/showproblem.php?pid=5073 Mean: 在一条数轴上,有n颗卫星,现在你可以改变k颗 ...
- ACM学习历程—HDU 5073 Galaxy(数学)
Description Good news for us: to release the financial pressure, the government started selling gala ...
- 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]- ...
- HDU 5073 Galaxy (数学)
Galaxy Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total Su ...
随机推荐
- perl 异步请求和JS对比
perl 异步和js对比: /js************** $(function(){ function isPhone(str){ var regex = /[0-9]{11,11}/; ret ...
- Unable to instantiate activity ComponentInfo或java.lang.ClassNotFoundException: com.ibright.herolegen
不知道怎么回事,在libs中添加了jar包后,无法给jar包附加上源码,于是采取以下措施: 删除自动生成的依赖: 在Android Dependences目录上右击->Build Path -& ...
- LeetCode——Count and Say
The count-and-say sequence is the sequence of integers beginning as follows: 1, 11, 21, 1211, 111221 ...
- Unicode 字符集与它的编码方式
正式内容開始之前,我们先来了解一个基本概念,编码字符集. 编码字符集:编码字符集是一个字符集,它为每个字符分配一个唯一数字.Unicode 标准的核心是一个编码字符集,字母"A"的 ...
- Disable root 账号登陆
1. 改动文件: /etc/ssh/sshd_config #PermitRootLogin yes 改动为: PermitRootLogin no 2. 重新启动ssh进程 /etc/init.d/ ...
- 给c++程序员的一份礼物——常用工具集
给c++程序员的一份礼物——常用工具集 [声明]如需复制.传播,请附上本声明,谢谢.原文出处:http://morningspace.51.net/,moyingzz@etang.com 所谓&quo ...
- ANDROID L——Material Design综合应用(Demo)
转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! Material Design: Material Design是Google推出的一个全 ...
- poj 1743 男人八题之后缀数组求最长不可重叠最长重复子串
Musical Theme Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 14874 Accepted: 5118 De ...
- JEECG开源团队招募新成员 2014年
JEECG开源团队招募新成员 2014年 截止日期:2014-06-01 JEECG开源项目 是一款基于代码生成器的微云高速开发平台.提供企业高速开发和採用微信实现移动应用的解决方式.J ...
- CodeForce 356A Knight Tournament(set应用)
Knight Tournament time limit per test 3 seconds memory limit per test 256 megabytes input standard ...