[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是一款企业级代码管理产品 ...
随机推荐
- C++ 中的友元(friend)
首先友元不是一个好的设计,它破坏了封装.并且自身有很多局限:比如友元关系不能被继承:友元关系是单向的,不具有交换性:友元关系不具有传递性. 类内声明的 friend 变量(或者函数)在访问该类的成员时 ...
- 78.员工个人信息保镖页面 Extjs 页面
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" ...
- 0503 php中for与foreach的区别
结论: foreach:只能用于数组和对象,如果是非索引数组,只可以用foreach. for:如果是索引数组,可以用for遍历. foreach循环结构是按照数组内部的指针去循环的,当 foreac ...
- [Apple开发者帐户帮助]一、开始(1)关于您的开发者帐户
Apple开发人员网站提供了为Apple平台制作出色应用所需的工具和信息.如果您不熟悉Apple平台上的开发,可以免费使用.只需接受Apple开发者协议,即可为您创建一个帐户.使用此帐户下载测试版软件 ...
- Python 38 初识数据库
数据库 1.什么是mysql,什么是数据库? 文件处理就可以将数据永久存储 问题 1.管理不方便 2.文件操作效率问题 3.一个程序不太可能仅运行在同一台电脑上 提高计算机性能的方式 1.垂直扩展 ...
- JavaScript 关于DOM的事件操作
一.JavaScript的组成 JavaScript基础分为三个部分: ECMAscript:JavaScript的标准语法.包括变量,表达式,运算符,函数,if语句,for语句等. DOM:文档对象 ...
- B - Magnets
Problem description Mad scientist Mike entertains himself by arranging rows of dominoes. He doesn't ...
- SQlserver 当输入参数为可选条件
以前很懒,都是用拼接字符串的方式,加上if 语句,根据输入参数是否为空来判断是否需要在where 后加上对应字段的条件限制 但是拼接字符串很烦,又总是被转义符搞得很烦 '''' 所以想了其他办法 分 ...
- 关于jquery的clone()和javascript的cloneNode()
区别: jquery的clone( ),如果是true就是深克隆,把事件都会克隆过去:如果是false,则仅仅克隆的是结构: javascript的cloneNode( ),如果是true,会将子节点 ...
- 2B课程笔记分享_StudyJams_2017
课程2B-创建交互式应用(下) 概述 课程2B的内容主要包括:使用变量来更新欲显示在屏幕上的内容,为按钮添加事件响应(联系XML属性与Java方法)逻辑等. 后续的课程会逐步深入地讲解使用Java开发 ...