bzoj1071[SCOI2007]组队
1071: [SCOI2007]组队
Time Limit: 3 Sec Memory Limit: 128 MB
Submit: 2472 Solved: 792
[Submit][Status][Discuss]
Description
NBA每年都有球员选秀环节。通常用速度和身高两项数据来衡量一个篮球运动员的基本素质。假如一支球队里
速度最慢的球员速度为minV,身高最矮的球员高度为minH,那么这支球队的所有队员都应该满足: A * ( height
– minH ) + B * ( speed – minV ) <= C 其中A和B,C为给定的经验值。这个式子很容易理解,如果一个球队的
球员速度和身高差距太大,会造成配合的不协调。 请问作为球队管理层的你,在N名选秀球员中,最多能有多少名
符合条件的候选球员。
Input
第一行四个数N、A、B、C 下接N行每行两个数描述一个球员的height和speed
Output
最多候选球员数目。
Sample Input
5 1
3 2
2 3
2 1
Sample Output
HINT
数据范围: N <= 5000 ,height和speed不大于10000。A、B、C在长整型以内。
2016.3.26 数据加强 Nano_ape 程序未重测
都说是神题,做了之后发现还真有点神。
注意到题目中给的数据可以支持n^2算法,那必须得好好利用
把题目中给出的公式A * ( height – minH ) + B * ( speed – minV ) <= C移项之后,
得到A*height+B*speed<=A*minH+B*minV+C
左边那一堆可以看成一个队员的另一个属性
也就是是说只要知道队员中最低的身高和速度,就可以通过某个队员自身属性判断他是否可以被选中
枚举一下最低身高和最慢速度,构造两个队员数组,第一个按身高排序第二个按属性值排序
速度随意枚举, 然后枚举身高
由于身高,属性值都迪递增,所以可以维护一个区间使其中的队员都满足条件
有点迷的是,维护区间的过程中,加入一个队员进入区间只考虑属性值,而删除一个队员只用考虑身高
容易混淆的就是,这样会不会删除一个本来就不在区间中的队员使得答案偏小?
肯定不会啦,因为仔细思考可以发现代码有个细节,就是考虑队员的速度一定大于最小速度的时候还必须满足小于一个定值,这就可以保证不会出现误删的情况!
还是挺神奇的,下面这个blog讲的不错,可以看看
http://blog.csdn.net/neither_nor/article/details/51282123
#include<bits/stdc++.h>
#define N 5005
using namespace std;
int n,A,B,C;
struct tam{int v,s,h;}a[N],b[N];
bool cmp1(tam x,tam y){return x.h<y.h;}
bool cmp2(tam x,tam y){return x.v<y.v;}
int calc(int x){return A*a[x].h+B*a[x].s;}
int main(){
scanf("%d%d%d%d",&n,&A,&B,&C);
for(int i=;i<=n;i++){
scanf("%d%d",&a[i].h,&a[i].s);
a[i].v=calc(i);b[i]=a[i];
}
sort(a+,a++n,cmp1);
sort(b+,b++n,cmp2);
int ans=;
for(int i=;i<=n;i++){
int m1=a[i].s,m2=m1+C/B,l=,r=,cnt=;
for(int j=;j<=n;j++){
while(r<n&&b[r+].v-A*a[j].h-B*a[i].s<=C)
if(b[++r].s>=m1&&b[r].s<=m2)++cnt;
while(l<n&&a[l+].h<a[j].h)
if(a[++l].s>=m1&&a[l].s<=m2)--cnt;
ans=max(ans,cnt);
}
}
printf("%d\n",ans);
return ;
}
bzoj1071[SCOI2007]组队的更多相关文章
- BZOJ1071: [SCOI2007]组队【双指针】【思维好题】
Description NBA每年都有球员选秀环节.通常用速度和身高两项数据来衡量一个篮球运动员的基本素质.假如一支球队里速度最慢的球员速度为minV,身高最矮的球员高度为minH,那么这支球队的所有 ...
- 【BZOJ1071】[SCOI2007]组队(神仙题)
[BZOJ1071][SCOI2007]组队(神仙题) 题面 BZOJ 洛谷 题解 首先把式子整理一下,也就是\(A*h+B*v\le C+A*minH+B*minV\) 我们正常能够想到的做法是钦定 ...
- BZOJ 1071 [SCOI2007]组队
1071: [SCOI2007]组队 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 1330 Solved: 417[Submit][Status][ ...
- 1071: [SCOI2007]组队
1071: [SCOI2007]组队 https://lydsy.com/JudgeOnline/problem.php?id=1071 分析: dp+单调性. A*(hi–minH)+B*(si–m ...
- [SCOI2007]组队 差分
题面:[SCOI2007]组队 题解: 一开始固定H然后找性质找了很久也没有找到任何有用的东西...... 然后大佬告诉我一个神奇的方法... 首先我们化一波式子: 设$H$表示高度的最小值,$V$表 ...
- 【bzoj1071】[SCOI2007]组队
sum= A*h+B*s排序 然后枚举height和speed的最小值 然后用两个指针:先枚举speed最小值,然后一边枚举v的最小值一边查询符合条件的人数. #include<algorith ...
- BZOJ1071 [SCOI2007]压缩 其他
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1071 题意概括 有两个序列a[1..n], b[1..n],其编号为1..n,设为s序列.现在我们 ...
- 1071: [SCOI2007]组队 - BZOJ
Description NBA每年都有球员选秀环节.通常用速度和身高两项数据来衡量一个篮球运动员的基本素质.假如一支球队里速度最慢的球员速度为minV,身高最矮的球员高度为minH,那么这支球队的所有 ...
- BZOJ.1071.[SCOI2007]组队(思路)
题目链接 三个限制: \(Ah-AminH+Bv-BminV\leq C\ \to\ Ah+Bv\leq C+AminH+BminV\) \(v\geq minV\) \(h\geq minH\) 记 ...
随机推荐
- 同一个页面同时拥有collectionView和navigationBar和tabBar时可能遇到的问题
写一个页面的时候,遇到了页面加载时候collectionView的最下面少了49个像素的位置,切换去别的页面之后,再返回,又变回正常,多方求解无果后,发现原来是系统自带的适应功能导致的,加入以下代码即 ...
- HTML5 canvas绘制雪花飘落
Canvas是HTML5新增的组件,它就像一块幕布,可以用JavaScript在上面绘制各种图表.动画等. 没有Canvas的年代,绘图只能借助Flash插件实现,页面不得不用JavaScript和F ...
- Docker学习笔记 - Docker的容器
docker logs [-f] [-t] [--tail] 容器名 -f -t --tail="all" 无参数:返回所有日志 -f 一直跟踪变化并返回 -t 带时间戳返 ...
- 浅谈Web网站的架构演变过程
前言 我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变. 该系统具备的功能: 用户模块:用户注册和管理 商品模块:商品展示和管理 交易模块:创建交易和管理 阶 ...
- java stream 原理
java stream 原理 需求 从"Apple" "Bug" "ABC" "Dog"中选出以A开头的名字,然后从中选 ...
- tcpdump记录
tcpdump -i eth0 -nn -A -X 'host 192.168.20.82 and port 9080' -i:interface 监听的网卡. -nn:表示以ip和port的方式显示 ...
- css3 flex 布局
今天做一个小实战,需要让一个登录框始终保持水平和垂直居中,第一个想到的就是通过定位(要想让一个div居中,采用定位可以解决,示例), 然后开始接触flex布局,学完感觉真的好用,现把知识点记录一下,以 ...
- requests+正则表达式提取猫眼电影top100
#requests+正则表达式提取猫眼电影top100 import requests import re import json from requests.exceptions import Re ...
- QT-第一个程序 Hello QT , 以及QT creator介绍
第一个程序 - Hello QT 首先写main.cpp: #include <QApplication> #include <QMainWindow> #include &l ...
- [机器学习Lesson4]多元线性回归
1. 多元线性回归定义 多元线性回归也被称为多元线性回归. 我们现在介绍方程的符号,我们可以有任意数量的输入变量. 这些多个特征的假设函数的多变量形式如下: hθ(x)=θ0+θ1x1+θ2x2+θ3 ...