hdu 5073
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5073
思路:一开始忘了排序,wa了好几发。。。选择区间长度为N - K的连续的数, 然后其余的K个数都移动到这N-K个数的中心就可以,公式为ans = min(ans, pos[i] - center_point) ^ 2),把这个公式展开然后预处理一下就可以了,复杂度为O(N)。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std; const int MAX_N = (50000 + 5000);
int N, K;
double pos[MAX_N], sum1[MAX_N], sum2[MAX_N]; int main()
{
int cas;
scanf("%d", &cas);
while (cas--) {
scanf("%d %d", &N, &K); for (int i = 1; i <= N; ++i) {
scanf("%lf", &pos[i]);
} if (N == K) {
puts("0");
continue;
} 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 = 1e100, point_b = 0;
int M = N - K; for (int i = M; i <= N; ++i) { point_b = (sum1[i] - sum1[i - M]) / M; double tmp = (sum2[i] - sum2[i - M]) - 2 * point_b * (sum1[i] - sum1[i - M]) + M * point_b * point_b; ans = min(ans, tmp);
} printf("%.12f\n", ans);
}
return 0;
}
hdu 5073的更多相关文章
- 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鞍山赛区现场赛D题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5073 解题报告:在一条直线上有n颗星星,一开始这n颗星星绕着重心转,现在我们可以把其中的任意k颗星星移 ...
- 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/ICPM2014鞍山现场赛D Galaxy (HDU 5073)
题目链接:pid=5073">http://acm.hdu.edu.cn/showproblem.php?pid=5073 题意:给定一条线上的点,然后能够去掉当中的m个,使剩下的到重 ...
- 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) ...
- hdu 5073 有坑+方差贪心
http://acm.hdu.edu.cn/showproblem.php?pid=5073 就是给你 n 个数,代表n个星球的位置,每一个星球的重量都为 1 开始的时候每一个星球都绕着质心转动,那么 ...
- HDU 5073 数学题
题目传送门 http://acm.hdu.edu.cn/showproblem.php?pid=5073 这道题RE了好多发啊囧,RE到精神不振. Galaxy的质心并不是一成不变的,随着一些星球的移 ...
- hdu 5073 Galaxy
题意是给定n个点,让求找到一个点p使得sigma( (a[i] - p) ^ 2 ) 最小,其中a[i]表示第i个点的位置.其中有k个点不用算. 思路:发现这道题其实就是求n-k个点方差. 那么推一下 ...
随机推荐
- bzoj 2738 矩阵乘法
其实这题跟矩阵乘法没有任何卵关系,直接整体二分,用二维树状数组维护(刚刚学会>_<),复杂度好像有点爆炸(好像有十几亿不知道是不是算错了),但我们不能怂啊23333. #include&l ...
- ReactNative 适合初学的第一个教程demo,找租房
1.下载工程 我看来看去,最让人容易入门的是这个demo: https://github.com/rayshen/PropertyFinder 是英国某开发者做的搜租房的小demo,包含的知识有:图片 ...
- <<< ajaxfileupload介绍
ajaxfileupload,jquery的一个异步上传插件,使用此插件你可以不用建立form,他会自动生成表单,且自动设置好enctype="multipart/form-data&quo ...
- docker windows 7 mysql安装使用教程
mysql 1. 镜像的下载 Docker pull MySQL 可以从https://docker.cn/docker/mysql 看到官方的同步镜像. 大约400多M. 2. 运行 每个镜像都有一 ...
- nginx正则表达式
1.^:匹配字符串的开始位置: 2..*: .匹配任意字符,*匹配数量0到正无穷: 3.\. 斜杠用来转义,\.匹配.: 4.(jpg|gif|png|bmp)匹配jpg或gif或png或bmp 5. ...
- 第一次部署Struts2时出现错误java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.class
报如下错误 at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720) at org. ...
- [译]在Node中使用indicative来验证model
原文: http://amanvirk.me/validating-models-in-node-js-using-indicative/\ 在nodejs中有关于验证model的包有许多, 我最喜欢 ...
- C/C++学习链接
C/C++堆和栈的区别:http://blog.csdn.net/hairetz/article/details/4141043
- PHP如何获取Post请求中的Json字符串数据?
摘自:http://dianjingjiaoyu.blog.163.com/blog/static/18347920820114194642257/ 最近用到ext与PHP交互,ext把json数据p ...
- 64位操作系统 通过ODP.NET 访问ORACLE 11g
摘要:64位操作系统部署.NET 程序访问oracle时,无法连接问题.(注意:客户端是64位系统 ,服务端是否64位 还是32位无关.) 1.到oracle 官网搜索相关版本的 ODAC网址: ht ...