【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杯超级篮球赛的更多相关文章

  1. 【t017】YL杯超级篮球赛

    Time Limit: 1 second Memory Limit: 256 MB [问题描述] 一年一度的高一YL杯超级篮球赛开赛了.当然,所谓超级的意思是参赛人数可能多于5人.小三对这场篮球赛非常 ...

  2. Java实现 第十一届蓝桥杯——超级胶水(渴望有题目的大佬能给小编提供一下题目,讨论群:99979568)

    PS: 好久没写过算法题了,总感觉自己写的思路没问题,但是结果就是不对,希望哪位大佬有时间能给找找问题 超级胶水 小明有n颗石子,按顺序摆成一排,他准备用胶水将这些石子黏在一起. 梅克什字有自己的重量 ...

  3. 从游戏开发到web前端——仅仅只是开始

    文章开头,请允许我随便扯扯. 一来,开头从来都是最难写的,二来,描述我现在的心情和状态以及工作背景啥的,对于大家理解后面的内容也许会有所帮助~ 2012年211大学毕业,工作4年了,一直都是做游戏前端 ...

  4. 阿里P8架构师大话设计模式,体会乐与怒的程序人生中值得回味一幕

    本书特色 本书有两个特色,第一特色是重视过程.看了太多的计算机编程类的图书,大多数书籍都是集中在讲授优秀的解决方案或者一个完美的程序样例,但对这些解决方案和程序的演变过程却重视不够,好书之所以好,就是 ...

  5. HDU 6463.超级无敌简单题-卡边界的暴力 (“字节跳动-文远知行杯”广东工业大学第十四届程序设计竞赛)

    超级无敌简单题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Sub ...

  6. “盛大游戏杯”第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 描述 在一个矩形的灰度图像上,每个 ...

  7. [超级懒人最简单法]iPhone 6 plus 适配切图方法分享(转载文章)

    网络上已经有很多适配教程,可是看了半天总是半懂不懂..最后还是要综合多个教程再动动脑子动动手,最好有程序大哥帮你试一下(这得有多大的福气) 如果有跟我一样情况的: 1.       有人说用sketc ...

  8. NOI2010超级钢琴 2

    2006: [NOI2010]超级钢琴 Time Limit: 20 Sec  Memory Limit: 552 MBSubmit: 1296  Solved: 606[Submit][Status ...

  9. 第三届蓝桥杯 c/c++真题

    第三届蓝桥杯真题 c/c++ 以下题目我自己也并不是所有的题目都是一次性就能做对或是有结题思路的.有些题目也是经过查证网上相关的资料或是参考了别人的代码和解题思路才做出来的.总的来看,这份题目考了很多 ...

随机推荐

  1. hibernate监听器的应用

    这里是我看到的一个hibernate监听器的简单实现供参考  http://www.360doc.com/content/14/0623/11/8072791_389034447.shtml 设计思路 ...

  2. IDEA的优质使用博客资源

    intelliJ idea 使用技巧&方法 IntelliJ IDEA 常用设置讲解 IntelliJ IDEA 详细图解最常用的配置 ,适合刚刚用的新人. IntelliJ IDEA 常见文 ...

  3. youtube视频字幕下载

    视频下载 安装TamperMonkey插件 字幕下载 http://mo.dbxdb.com/setting.html https://zhuwei.me/y2b/

  4. Java堆栈内存总结

    在Java中,主要存在四块内存空间,除了保存static类型属性的全局数据区,以及保存虽有方法定义的全局代码区之外,程序员更多的在乎内存中的另外两种区域--对象的生存空间堆(heap)和方法调用及变量 ...

  5. jenkins中使用rsync, scp命令

    jenkins 中使用 rsync 命令 是出现一些错误输出 Host key verification failed. rsync: connection unexpectedly closed ( ...

  6. [SDOI2015]序列统计

    [SDOI2015]序列统计 标签: NTT 快速幂 Description 给你一个模m意义下的数集,需要用这个数集生成一个数列,使得这个数列在的乘积为x. 问方案数模\(1004535809\). ...

  7. 【Unity3D技术文档翻译】第1.3篇 创建 AssetBundles

    上一章:[Unity3D技术文档翻译]第1.2篇 为打包 AssetBundles 准备资产 本章原文所在章节:[Unity Manual]→[Working in Unity]→[Advanced ...

  8. Python标准异常总结

    Python标准异常总结 AssertionError 断言语句(assert)失败 AttributeError 尝试访问未知的对象属性  EOFError 用户输入文件末尾标志EOF(Ctrl+d ...

  9. python并发编程之多进程(二):互斥锁(同步锁)&进程其他属性&进程间通信(queue)&生产者消费者模型

    一,互斥锁,同步锁 进程之间数据不共享,但是共享同一套文件系统,所以访问同一个文件,或同一个打印终端,是没有问题的, 竞争带来的结果就是错乱,如何控制,就是加锁处理 part1:多个进程共享同一打印终 ...

  10. springboot入门_data-jpa

    今天学习了在springboot项目中访问数据库,做下笔记,以备后期查看. Spring Data JPA 是 Spring 基于 ORM 框架和JPA 规范 封装的一套应用框架,包含了增删改查等常用 ...