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

4 1 2 10
5 1
3 2
2 3
2 1

Sample Output

4

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]组队的更多相关文章

  1. BZOJ1071: [SCOI2007]组队【双指针】【思维好题】

    Description NBA每年都有球员选秀环节.通常用速度和身高两项数据来衡量一个篮球运动员的基本素质.假如一支球队里速度最慢的球员速度为minV,身高最矮的球员高度为minH,那么这支球队的所有 ...

  2. 【BZOJ1071】[SCOI2007]组队(神仙题)

    [BZOJ1071][SCOI2007]组队(神仙题) 题面 BZOJ 洛谷 题解 首先把式子整理一下,也就是\(A*h+B*v\le C+A*minH+B*minV\) 我们正常能够想到的做法是钦定 ...

  3. BZOJ 1071 [SCOI2007]组队

    1071: [SCOI2007]组队 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 1330  Solved: 417[Submit][Status][ ...

  4. 1071: [SCOI2007]组队

    1071: [SCOI2007]组队 https://lydsy.com/JudgeOnline/problem.php?id=1071 分析: dp+单调性. A*(hi–minH)+B*(si–m ...

  5. [SCOI2007]组队 差分

    题面:[SCOI2007]组队 题解: 一开始固定H然后找性质找了很久也没有找到任何有用的东西...... 然后大佬告诉我一个神奇的方法... 首先我们化一波式子: 设$H$表示高度的最小值,$V$表 ...

  6. 【bzoj1071】[SCOI2007]组队

    sum= A*h+B*s排序 然后枚举height和speed的最小值 然后用两个指针:先枚举speed最小值,然后一边枚举v的最小值一边查询符合条件的人数. #include<algorith ...

  7. BZOJ1071 [SCOI2007]压缩 其他

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1071 题意概括 有两个序列a[1..n], b[1..n],其编号为1..n,设为s序列.现在我们 ...

  8. 1071: [SCOI2007]组队 - BZOJ

    Description NBA每年都有球员选秀环节.通常用速度和身高两项数据来衡量一个篮球运动员的基本素质.假如一支球队里速度最慢的球员速度为minV,身高最矮的球员高度为minH,那么这支球队的所有 ...

  9. BZOJ.1071.[SCOI2007]组队(思路)

    题目链接 三个限制: \(Ah-AminH+Bv-BminV\leq C\ \to\ Ah+Bv\leq C+AminH+BminV\) \(v\geq minV\) \(h\geq minH\) 记 ...

随机推荐

  1. 织梦cms网上复制图片不可用的解决方法

    背景描述: 织梦cms采集图片集时, 需要使用织梦cms提供的"网上复制图片"的功能, 好像我这里这个功能一直不可用, 今天下定决心研究了下源代码并进行了适当修改, 将我的修改提供 ...

  2. django报错Manager isn't accessible via UserInfo instances

    出现这种错误是因为调用模型对象时使用了变量名,而不是对象名(模型类),例如: user = UserInfo()user_li = user.objects.filter(uname=username ...

  3. c#动态加载卸载DLL

    前段时间工作的时候遇到一个问题.就是需要每次启动程序的时候动态替换掉某个dll,所以就百度了这方面的资料.这次记录下来让自己以后可以看. 根据自己的理解,动态卸载dll需要有以下条件: 1:dll在加 ...

  4. centos7.4下离线安装CDH5.7

    (一)安装前的规划 (1)操作系统版本:centos7.4(64bit) [root@hadoop22 etc]# more /etc/centos-release CentOS Linux rele ...

  5. 第五章 JavaScript对象及初识面向对象

    第五章   JavaScript对象及初识面向对象 一.对象 在JavaScript中,所有事物都是对象,如字符串.数值.数组.函数等. 在JavaScript对象分为内置对象和自定义对象,要处理一些 ...

  6. Linux系统把/home重新挂载到其他硬盘或分区

    一开始没有做好规划,导致/home空间不足,再加上分区表不是GPT,导致无法扩展超过2T,因此需要重新划分一块更大的硬盘给/home. 1.把新挂载的4T硬盘进行分区和格式化 2.创建目录 sudo ...

  7. Python内置函数(11)——complex

    英文文档: class complex([real[, imag]]) Return a complex number with the value real + imag*1j or convert ...

  8. mqtt paho ssl java端代码

    参考链接:http://blog.csdn.net/lingshi210/article/details/52439050 mqtt 的ssl配置可以参阅 http://houjixin.blog.1 ...

  9. python入门(2)python的安装

    python入门(2)python的安装 Python是跨平台的,可以运行在Windows.Mac和各种Linux/Unix系统上. 2.x还是3.x Python有两个版本,一个是2.x版,一个是3 ...

  10. 真正理解拉格朗日乘子法和 KKT 条件

        这篇博文中直观上讲解了拉格朗日乘子法和 KKT 条件,对偶问题等内容.     首先从无约束的优化问题讲起,一般就是要使一个表达式取到最小值: \[min \quad f(x)\]     如 ...