[Codeup 25482]选美
[Codeup 25482 ]选美
题目
一年一度的星哥选美又拉开了帷幕
N个人报名参加选拔,每个人都有着各自的相貌参数和身材参数(不大于 10000 的正整数)。你的任务是尽可能让更多人被星哥选中,而唯一要求就是,在这只队伍里面的每个人,都需满足以下不等式:
A (H− h) +B(W− w) ≤ C
其中H和W为这个人的相貌和身材, h和w为选中者中的最小相貌参数和最小身材参数,而A、 B、 C为三个不大于 10000 的正的整型常数。
现在请计算星哥最多可以选中多少人。
INPUT
第一行:一个整数: N(0<N<=2000)
第二行:三个分开的整数: A,B和C
第三行到第N+ 2行:每行有两个用空格分开的整数,分别表示一个人的相貌参数和身材参数
OUTPUT
第一行:最多被选的人数
SAMPLE
INPUT
8
1 2 4
5 1
3 2
2 3
2 1
7 2
6 4
5 1
4 3
OUTPUT
5
解题报告
考试时第一眼看到 星哥 我是茫然的= =,我在想我啥时候还能选美了= =
考试时打了个毫无根据的
乱搞暴力,然后貌似竟然还过了一个点
正解:
首先我们观察一下这个式子:

显然可以化简一下,我们先将不等关系改为等于关系,再移项,就可以得到:

也就是说,我们完全可以得到两个量w与h的等量关系
那么我们想,假如我们知道了其中的h,那么我们一定可以求出这个最小的w,那么我们再把不等关系转回来,我们就得到的最小的w
那么我们就可以得到一个区间
,只要w在这个区间里,这个人就能被选上(原因很简单,左端点是通过不等关系求出来的,右端点则是它本身的w值,假如最小值大于该值,那么就存在这个Wj比最小值还小,这显然是不成立的,所以显然只有w在该区间里才可以是她被选上)
接下来我们得到了n个区间,我们要让选上的人尽量多,所以我们要求被尽量多的区间所包含的点,来作为我们的w,所以我们可以用差分来处理,左端点+1,右端点后面一个点-1,那么这个点所能满足的数量就是该点的前缀和(差分:我们想为什么这样是可行的,我们只考虑一条线段,在该线段前的点,显然前缀和为0,在该线段中的点,显然前缀和只包含左端点,前缀和为1,在该线段后的点,前缀和中包含的左端点与右端点的1和-1相抵消,故前缀和为0,至于边界,画一画就出来了)
所以只是一个
求最大前缀和即可,只是常数有点大(人傻自带超大常数)
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
inline int read(){
int sum();
char ch(getchar());
for(;ch<''||ch>'';ch=getchar());
for(;ch>=''&&ch<='';sum=sum*+(ch^),ch=getchar());
return sum;
}
int n,a,b,c;
int H[],W[];
int sum[];
int tp(),ans();
int main(){
n=read(),a=read(),b=read(),c=read();
for(int i=;i<=n;i++)
H[i]=read(),W[i]=read(),tp=max(tp,W[i]);
for(int i=;i<=n;i++){
memset(sum,,sizeof(sum));
for(int j=;j<=n;j++)
if(H[j]>=H[i]&&a*(H[j]-H[i])<=c){
int tmp((a*(H[j]-H[i])+b*W[j]-c)/b);
if(tmp<)
tmp=;
if(tmp>W[j])
tmp=W[j];
sum[tmp]++,sum[W[j]+]--;
}
for(int j=;j<=tp;j++)
sum[j]+=sum[j-];
for(int j=;j<=n;j++)
if(H[j]>=H[i]&&a*(H[j]-H[i])<=c)
ans=max(ans,sum[W[j]]);
}
printf("%d",ans);
}
[Codeup 25482]选美的更多相关文章
- [Codeup 25482] Beauty
25482: Beauty 时间限制: 1 Sec 内存限制: 128 MB献花: 7 解决: 3[献花][花圈][TK题库] 题目描述 一年一度的星哥选美又拉开了帷幕 N个人报名参加选拔,每个人 ...
- 暑假集训D13总结
考试 又炸掉了= = 本来看着题就一脸茫然,默默的打暴力骗分,然后就交了卷= = 重要的是,在本机跑的毫无障碍的T3程序竟然在评测机CE啊喂,35分就没了啊喂(这可是比我现在分还高= =) 内心几近崩 ...
- HURST 1116:选美大赛(LIS+路径输出)
选美大赛 Time Limit: 1000 MS Memory Limit: 65536 K Total Submit: 1099(318 users) Total Accepted: 349(252 ...
- 微服务RPC框架选美
原文:http://p.primeton.com/articles/59030eeda6f2a40690f03629 1.RPC 框架谁最美? Hello,everybody!说到RPC框架,可能大家 ...
- 选股:“均线是水,K线是舟,量是马达!”的选美理念!
选股:“均线是水,K线是舟,量是马达!”的选美理念! 很多庄家就是故意做数据,让某只股票的数据非常符合“理论”,引诱“技术派”股民
- [Codeup 25481] swan
莫名其妙还找到了另一个铟炔锶烃的OJ : Codeup墓地 25481: swan 时间限制: 1 Sec 内存限制: 128 MB献花: 86 解决: 13[献花][花圈][TK题库] 题目描述 ...
- TOJ 4095: love168yk的选美大赛
4095: love168yk的选美大赛 Time Limit(Common/Java):1000MS/3000MS Memory Limit:65536KByteTotal Submit: ...
- 选美?作秀?MES系统的选择更应该从实际出发
MES选型不是做秀,不是选美. 如今不少企业在信息化推广应用过程中面面求好.追求完美,用意没错,然而在MES开发过程中,软件商不可能将今后各种可能出现的问题考虑周全,不可能将系统做到十全十美.随着系统 ...
- 阿里云代码管理平台 Teambition Codeup(行云)亮相,为企业代码安全护航
2019杭州云栖大会企业协作与研发效能专场,企业协同平台Teambition负责人齐俊元正式发布阿里云自研的代码管理平台Teambition Codeup(行云),Codeup是一款企业级代码管理产品 ...
随机推荐
- luogu1522 牛的旅行
题目大意 每个牧场里的某些坐标位置有牧区,牧区间有一个个路径(长度为位置间的直线距离).一个连通块内两个节点间的最短路径长度最大值为它的直径.请编程找出一条连接两个不同牧场的路径,使得连上这条路径后, ...
- luogu1005 矩阵取数游戏
题目大意 一个矩阵,每次从每一行的行首或行尾取一个数,每一行的价值为 取的数*2^当前取数的次数,每一次的价值为每一行的价值的和.求得到的价值的最大值. 思路 #include <cstdio& ...
- wesome-android
awesome-android Introduction android libs from github System requirements Android Notice If the lib ...
- 深入理解android view 生命周期
作为自定义 view 的基础,如果不了解Android view 的生命周期 , 那么你将会在后期的维护中发现这样那样的问题 ....... 做过一段时间android 开发的同学都知道,一般 on ...
- 胜利大逃亡(续)(bfs)
http://acm.hdu.edu.cn/showproblem.php?pid=1429 #include <stdio.h> #include <queue> #incl ...
- 0507-php独立环境的安装与配置
1.在一个纯英文目录下新建三个文件夹 2.安装apache(选择好版本) 过程中该填的按格式填好,其余的只更改安装目录即可 如果报错1901是安装版本的问题. 检查:安装完成后localhost打开为 ...
- 一段时间加载的js函数
<html><head><meta charset="utf8"><script type="text/javascript&q ...
- Redis(六)-数据类型
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). String(字符串) string是redis最 ...
- 认识JDK、JRE、JVM
JDK.JRE.JVM之间的关系: 首先看看JDK与JRE的区别与联系,如下图所示: 由图可知: JDK = JRE + Tools&Tool APIs JDK的核心是Java SE API. ...
- [转]Java web 开发 获取用户ip
如果通过了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP值,那么真正的用户端的真实IP则是取X-Forwarded-For中第一个非unknown的有效IP字符串. pu ...