vijos 分梨子
很有(wei)趣(suo)的一道题
暴力解法也不难,枚举大小下限与甜度下限,在一个一个地试
显然 O(n^3) 炸掉
但如何将其缩短,只好从那个式子来入手了:
C1⋅(ai−a0)+C2⋅(bi−b0)<=C3
变换一下可得:
C1⋅ai+C2⋅bi−C3<=C1⋅a0+C2⋅b0
不难发现
当甜度下限与大小下限一直增大,梨子的甜度与大小整体会增大,而小于下限的也不会再被访问到
于是从小到大枚举下限
设t[i]为当甜度下限为b[i]时,刚好可以被访问到的(意思是在前面还没被访问到)梨子的个数
代码如下:
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int getint()
{
int num=0,flag=1;char c;
while((c=getchar())<'0'||c>'9')if(c=='-')flag=-1;
while(c>='0'&&c<='9')num=num*10+c-48,c=getchar();
return num*flag;
}
struct node{
int num,id;
}B[2001],C[2001];
bool cmp(node x,node y){return x.num<y.num;}
int t[2001],sum,ans;
int a[2001],b[2001];
int n,c1,c2,c3;
int main()
{
int i,j;
n=getint();c1=getint(),c2=getint(),c3=getint();
for(i=1;i<=n;i++)a[i]=getint(),B[i].num=b[i]=getint(),B[i].id=i;
for(i=1;i<=n;i++)C[i].num=a[i]*c1+b[i]*c2-c3,C[i].id=i;
sort(B+1,B+n+1,cmp);sort(C+1,C+n+1,cmp);
for(i=1;i<=n;i++){
memset(t,0,sizeof t);
sum=0;
int k=1;
for(j=1;j<=n;j++)
{
while(k<=n&&a[i]*c1+B[j].num*c2>=C[k].num){
if(a[C[k].id]>=a[i]&&b[C[k].id]>=B[j].num)
sum++,t[C[k].id]++;
k++;
}
if(j>1)
sum-=t[B[j-1].id],t[B[j-1].id]=0;
ans=max(ans,sum);
}
}
printf("%d",ans);
}
vijos 分梨子的更多相关文章
- P1493 分梨子
P1493 分梨子 题目描述 Finley家的院子里有棵梨树,最近收获了许多梨子.于是,Finley决定挑出一些梨子,分给幼稚园的宝宝们.可是梨子大小味道都不太一样,一定要尽量挑选那些差不多的梨子分给 ...
- [SinGuLaRiTy] 2017-07-21 综合性测试
[SinGuLaRiTy-1028] Copyright (c) SinGuLaRiTy 2017. All Rights Reserved. 对于所有题目:Time Limit: 1s | Memo ...
- [SinGuLaRiTy] 动态规划题目复习
[SinGuLaRiTy-1026] Copyright (c) SinGuLaRiTy 2017. All Rights Reserved. [UVA 1025] A Spy in the Metr ...
- Vijos p1892 树上的最大匹配 树形DP+计数 被卡常我有特殊技巧heheda
https://vijos.org/p/1892 此题需要手动开栈: <<; //256MB char *p=(char*)malloc(size)+size; __asm__(" ...
- 【模拟】Vijos P1005 超长数字串
题目链接: https://vijos.org/p/1005 题目大意: 无限的正整数按顺序拼接成字符串S(S=12345678910111213...),给你一个字符串A(len<=200)求 ...
- 【单调队列】Vijos P1771 瑞士轮 (NOIP2011普及组第三题)
题目链接: https://vijos.org/p/1771 题目大意: 给定2N个人(N<=100 000)和其初始分数.能力值(能力两两不同),比赛M次(M<=50),每次PK都是按分 ...
- vijos国庆节模拟赛之繁星春水
A.闪烁的繁星 题目:https://vijos.org/p/1881 题解:貌似做过小白逛公园或者序列操作都可以秒出吧,就是pushup函数比较麻烦,不过仔细想一想就知道了. 代码: #includ ...
- vijos P1001 谁拿了最多奖学金
vijos P1001 谁拿了最多奖学金 描述 某校的惯例是在每学期的期末考试之后发放奖学金.发放的奖学金共有五种,获取的条件各自不同: 1) 院士奖学金,每人8000元,期末平均成绩高于80分(&g ...
- 【vijos】1164 曹冲养猪(中国剩余定理)
https://vijos.org/p/1164 好赞orz. 对于求一组线性同余方程 x=a[i](mod m[i]) 这里任意两个m[i]和m[j]都互质 那么可以用中国剩余定理来做. 对中国剩余 ...
随机推荐
- Hbase概念原理扫盲
一.Hbase简介 1.什么是Hbase Hbase的原型是google的BigTable论文,收到了该论文思想的启发,目前作为hadoop的子项目来开发维护,用于支持结构化的数据存储. Hbase是 ...
- 学习Java第三周
这是学习java的第三周 上周想要学习的这周也完成了,研究和测试代码花费了大约2个小时,发现这些内容方法居多,想要熟练掌握就要好好记忆了 包装类 数字处理类 Object类 Java类包 内部类 下一 ...
- web服务器调用Servlet的过程
Servlet程序是由WEB服务器调用,web服务器收到客户端的Servlet访问请求后: Web服务器首先检查是否已经装载并创建了该Servlet的实例对象.如果是,则直接执行第④步,否则,执行第② ...
- 通过脚本实现对web的健康检查
前面的文章中(https://www.cnblogs.com/zyxnhr/p/10707932.html),通过nginx的第三方模块实现对web端的一个监控,现在通过一个脚本实现对第三方的监控 脚 ...
- switch多值匹配骚操作,带你涨姿势!
我们都知道 switch 用来走流程分支,大多情况下用来匹配单个值,如下面的例子所示: /** * @from 微信公众号:Java技术栈 * @author 栈长 */ private static ...
- ubuntu手动升级系统
之前自己安装的是ubuntu14.04,现在需要升级到16.04,于是上网搜索了一下升级步骤以及相关命令,将这些整理出来分享给大家,希望能够给大家提供帮助. 1.更新资源: sudo apt-get ...
- 博帝飚速盘 16G
设备制造商: Patriot Memory当前协议 : USB2.0输入电流 : 300mA 芯片制造商: 群联(Phison)芯片型号 : PS2251-38闪存颗粒 : 美光( ...
- 1083 是否存在相等的差 (20 分)C语言
给定 N 张卡片,正面分别写上 1.2.--.N,然后全部翻面,洗牌,在背面分别写上 1.2.--.N.将每张牌的正反两面数字相减(大减小),得到 N 个非负差值,其中是否存在相等的差? 输入格式: ...
- [技术翻译]使用Nuxt生成静态网站
本周再来翻译一些技术文章,本次预计翻译三篇文章如下: 04.[译]使用Nuxt生成静态网站(Generate Static Websites with Nuxt) 05.[译]Web网页内容是如何影响 ...
- 虚拟机安装LEDE旁路由实现软路由功能
如何在虚拟上安装LEDE软路由,接下来我们一步一步操作. 1.首先到https://firmware.koolshare.cn/ 下载虚拟机下专用盘如图标记均可 2.虚拟机创建 选择下载好的文件 保持 ...