【CJOJ P2110】YL杯超级篮球赛
【CJOJ P2110】YL杯超级篮球赛
Description
一年一度的高一YL杯超级篮球赛开赛了。当然,所谓超级的意思是参赛人数可能多于5人。小三对这场篮球赛非常感兴趣,所以一场都没有落下。每天中午都准时守候在篮球场看比赛。经过一个星期的研究,小三终于对篮球的技战术找到了一丝丝感觉。他发现打YL杯的每个班都有一套相似的进攻战术:
1.控球后卫带球到前场,找到一个最佳攻击点(x,y)。
2.所有除控卫以外的队员都从各自的当前位置迅速向(x,y)移动。
3.控球后卫根据场上情况组织进攻。
这个战术对于一般情况是非常奏效的,但是每个队员毕竟不像小三一样每天精力过剩,每个队员都有一个疲劳指数w,显然对于每个队员的移动需要消耗一些能量。
假设一个队员从位置xl,y1)移动到(x,y)的能量消耗为w*(ABS(x-x1)+ABS(y-y1)),这里ABS为绝对值函数,那么我们希望整个队伍一次进攻的能量消耗当然是越少越好。显然能量消耗的多少直接取决于控球后卫对于攻击点(x,y)的选择。
因为参赛人数众多,所以小三希望你能编写一个程序,帮他找出某个时刻的最佳攻击点。
Input
第一行:一个整数N,表示篮球队人数
第二行:一共N个整数,其中的第i个数Wi表示第i个队员的疲劳指数。
第3~N+2行:每一行两个整数x和Y,表示其中的第i+2行,表示第i个队员的当前位置的横坐标和纵坐标。
Output
一个实数。表示所有队员集合到最佳攻击位置的能量消耗总和,答案保留两位小数。
样例输入
1
1
0 0
样例输出
0.00
数据规模
n<=50000
0<w<=1000
0<x,y<=1000000
题解
这道题有点像士兵站队问题,每一个人的疲劳值直接看成重复的几个人即可。可以自己试着画一下,发现会很简单。把每个人的横坐标、纵坐标全部排序,然后依次就中位数计算就可以了,具体的证明请自己温习初一的绝对值距离。这道题的写法很好的利用到了中位数/绝对值的使用。
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
int w[50001],n;
long long sum=0;
struct dsl
{
int a;
int w;
};//结构体定义
bool cmp(dsl k,dsl d)
{
return k.a<d.a;
}//比较函数(方便直接调用sort)
dsl x[50001],y[50001];
int main()
{
//读入
long long cd=0;
cin>>n;
for(int i=1;i<=n;++i)
{
scanf("%d",&w[i]);
x[i].w=w[i];
y[i].w=w[i];
cd+=w[i];
}
for(int i=1;i<=n;++i)
scanf("%d%d",&x[i].a,&y[i].a);
//排序
sort(&x[1],&x[n+1],cmp);
sort(&y[1],&y[n+1],cmp);
//计算
int k;
cd=int(((cd+1)/2)+0.5);
long long g=cd;
for(int i=1;i<=n;++i)
{
cd-=x[i].w;
if(cd<=0){k=i;break;}
}
for(int i=1;i<=n;++i)
sum+=abs(x[k].a-x[i].a)*x[i].w;
cd=g;
for(int i=1;i<=n;++i)
{
cd-=y[i].w;
if(cd<=0){k=i;break;}
}
for(int i=1;i<=n;++i)
sum+=abs(y[k].a-y[i].a)*y[i].w;
//利用绝对值进行计算
//输出
cout<<sum<<".00"<<endl;
//由绝对值的最小值和题目数据可知,结果一定是一个整数
//但是要求输出的事小数点后两位,所以直接打印".00"
return 0;
}
【CJOJ P2110】YL杯超级篮球赛的更多相关文章
- 【t017】YL杯超级篮球赛
Time Limit: 1 second Memory Limit: 256 MB [问题描述] 一年一度的高一YL杯超级篮球赛开赛了.当然,所谓超级的意思是参赛人数可能多于5人.小三对这场篮球赛非常 ...
- Java实现 第十一届蓝桥杯——超级胶水(渴望有题目的大佬能给小编提供一下题目,讨论群:99979568)
PS: 好久没写过算法题了,总感觉自己写的思路没问题,但是结果就是不对,希望哪位大佬有时间能给找找问题 超级胶水 小明有n颗石子,按顺序摆成一排,他准备用胶水将这些石子黏在一起. 梅克什字有自己的重量 ...
- 从游戏开发到web前端——仅仅只是开始
文章开头,请允许我随便扯扯. 一来,开头从来都是最难写的,二来,描述我现在的心情和状态以及工作背景啥的,对于大家理解后面的内容也许会有所帮助~ 2012年211大学毕业,工作4年了,一直都是做游戏前端 ...
- 阿里P8架构师大话设计模式,体会乐与怒的程序人生中值得回味一幕
本书特色 本书有两个特色,第一特色是重视过程.看了太多的计算机编程类的图书,大多数书籍都是集中在讲授优秀的解决方案或者一个完美的程序样例,但对这些解决方案和程序的演变过程却重视不够,好书之所以好,就是 ...
- HDU 6463.超级无敌简单题-卡边界的暴力 (“字节跳动-文远知行杯”广东工业大学第十四届程序设计竞赛)
超级无敌简单题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Sub ...
- “盛大游戏杯”第15届上海大学程序设计联赛夏季赛暨上海高校金马五校赛题解&&源码【A,水,B,水,C,水,D,快速幂,E,优先队列,F,暴力,G,贪心+排序,H,STL乱搞,I,尼姆博弈,J,差分dp,K,二分+排序,L,矩阵快速幂,M,线段树区间更新+Lazy思想,N,超级快速幂+扩展欧里几德,O,BFS】
黑白图像直方图 发布时间: 2017年7月9日 18:30 最后更新: 2017年7月10日 21:08 时间限制: 1000ms 内存限制: 128M 描述 在一个矩形的灰度图像上,每个 ...
- [超级懒人最简单法]iPhone 6 plus 适配切图方法分享(转载文章)
网络上已经有很多适配教程,可是看了半天总是半懂不懂..最后还是要综合多个教程再动动脑子动动手,最好有程序大哥帮你试一下(这得有多大的福气) 如果有跟我一样情况的: 1. 有人说用sketc ...
- NOI2010超级钢琴 2
2006: [NOI2010]超级钢琴 Time Limit: 20 Sec Memory Limit: 552 MBSubmit: 1296 Solved: 606[Submit][Status ...
- 第三届蓝桥杯 c/c++真题
第三届蓝桥杯真题 c/c++ 以下题目我自己也并不是所有的题目都是一次性就能做对或是有结题思路的.有些题目也是经过查证网上相关的资料或是参考了别人的代码和解题思路才做出来的.总的来看,这份题目考了很多 ...
随机推荐
- 我的前端故事----来聊聊怎么写react-native上的样式吧
我遇到了什么问题? 不久之前我重构了一个古老的项目,总结了一些js方面的想法,不过对于一个前端项目而言不仅仅只由js组成的嘛,上学的时候老师和我说HTML+CSS+JS对应的是页面的骨架.皮肤和肌肉. ...
- Vue站点的搭建之旅
背景 很久没写博客了,这次博客分享一下最近上班空闲时间做的两个业余Demo.分别是V电影App的移动端站点[一直很喜欢用这个APP可是他们没有出对应的mobile端,所以自己开发一个, ...
- H-ui.admin v2.3后台模版!
一个很好的 后台开发模板 演示地址 http://demo.h-ui.net/H-ui.admin/3.1/index.html 下载地址 http://downs.h-ui.net/h-ui/H-u ...
- 原创~vue router-link添加点击事件
在学习vue中会遇到给router-link添加@click,@mouseover等事件 我想要做的是用v-for循环输出导航菜单,但是下面代码的@click事件和@mouseover并不会响应 &l ...
- SQL SERVER FOR LINUX初体验
今天得空,就在Ubuntu17.04上安装了SQL SERVER 2017体验下,总体来说还是不错的. 在Ubuntu上安装SQL SERVER 2017还是比较方便的,只需几条命令即可: curl ...
- 听闰土大话前端之ES6是怎么来的
前言 相信做前端的朋友没有不知道ECMAScript6的,都知晓ES6新增了不少新的特性,但是你知道ES6是怎么来的吗?今天就让闰土来带大家大话ES6的前世今生.当然了,这篇文章会以扫盲为主,科普为辅 ...
- laravel框架基础知识点
一.数据库:DB 1.db查 DB::table('msg')->where('id','>',$id)->get() 查询单行 DB::table(' ...
- 一种解决eclipse中安装maven出错的方法
1.安装步骤:https://jingyan.baidu.com/article/a17d5285feb4dd8099c8f26e.html 2.安装第三步的解决办法:m2e 路径换成 http ...
- .addClass(),.removeClass(),.toggleClass()的区别
.addClass("className")方法是用来给指定元素增加类名,也就是说给指定的元素追加样式: 可以同时添加多个类名,空格符隔开 $("selector&quo ...
- MYSQL索引的类型和索引的方式
索引的类型: normal:表示普通索引 unique:表示唯一的,不允许重复的索引,如果该字段信息保证不会重复例如身份证号用作索引时,可设置为unique full textl: 表示 全文搜索的索 ...