题目描述

某天Lemon去超市买柠檬,他发现货架上有N个柠檬,每个柠檬都有一个重量Wi和价格Ci。

Lemon身上只带了S元钱,因此他想要买一个价格不超过S的柠檬回家,另外,他希望他买的那个柠檬的性价比尽量高。

性价比的定义是重量除以价格,即第i个柠檬的性价比是Wi/Ci。你的任务是告诉Lemon,他应该买第几个柠檬。

输入输出格式

输入格式

输入文件第一行包含两个正整数N,S。

输入文件第2~N+1行,每行包含两个正整数Wi、Ci,第i+1行的数表示第i个柠檬的重量和价格。

输出格式

输输出文件第一行仅包含一个数K,表示购买第K只柠檬能使Lemon在可以接受的价格内获得最高的性价比。题目保证答案唯一。

样例

INPUT

4 15

4 8

4 10

8 10

10000 20

OUTPUT

3

HINT

样例解释 Sample Explanation:

第1只柠檬重量为4,价格为8,性价比为4/8=0.5;

第2只柠檬重量为4,价格为10,性价比为4/10=0.4;

第3只柠檬重量为8,价格为10,性加比为8/10=0.8;

第4只柠檬重量为10000,价格为20,性价比为10000/20=500,但Lemon只带了15元,无法购买这只柠檬。

因此Lemon的最佳选择是第3只柠檬。

数据范围 Data Range:

对于100%的数据,满足:0<n≤100000;0<s≤109;0<wi、ci≤109;

n,s,w,c均为整数。

SOLUTION

傻蛋坑题。

这题把坑拿掉顶多就是普及-的难度。

如果数据是\(10^9\)的数量级的话就必须考虑一下精度问题,因为我们一般使用的double类型的有效位数为15位,所以考虑简单转化:$$\frac{w_i}{c_i}>\frac{w_{rec}}{c_{rec}}$$等效于$$w_i\cdot c_{rec}>w_{rec}\cdot c_i$$

这样的话就只要改成long long就好了,以乘代除来保证精度的技巧以前也出现过,并没有重视,所以应该是一个比较好的教训了。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
using namespace std;
typedef long long LL;
inline int read(){
int x=0,f=1;char ch=getchar();
while (ch<'0'||ch>'9') {if (ch=='-') f=-1;ch=getchar();}
while (ch>='0'&&ch<='9') {x=x*10+ch-48;ch=getchar();}
return x*f;}
int n,S,ans=0;
LL recw=0,recc=0;
inline LL gcd(LL x,LL y) {return (!y)?x:gcd(y,x%y);}
int main(){
//freopen("market.in","r",stdin);
//freopen("market.out","w",stdout);
int i,j;
n=read();S=read();
for (i=1;i<=n;++i) {LL w=read(),c=read();if (c>S) continue;
LL g=gcd(w,c);w/=g;c/=g;if (!ans) {recw=w;recc=c;ans=i;continue;}
LL now=w*recc,rec=c*recw;if (now>rec) {recw=w;recc=c;ans=i;}
}//直接踩中了这题的雷,直接除的话会爆精度
printf("%d\n",ans);
return 0;
}

JXJJOI2018_T1_market的更多相关文章

随机推荐

  1. druid socket timeout超时15分钟(转载)

    背景 在应用端通过mybatis的interceptor自定义Plugin拦截Executor, 统计输出sql的执行耗时. 今天生产发生一个很奇怪的问题: 莫名其妙卡顿15分钟+,其后正常返回sql ...

  2. ZJNU 2133 - 认亲大会

    将辈分差距转为数字 例如 A 是 B son A=B-1 A 是 B grandfather A=B+2然后编号1数字设置为0,建图bfs 最后搜索编号2到100是否存在>0的数即可 /* Wr ...

  3. SVN常见错误解决办法和批量add等命令

    批量添加所有更改文件 svn add . --no-ignore --force 提交文件 svn commit -m "up" File already exists: file ...

  4. ZZJ_淘淘商城项目:day04(淘淘商城03 - 前台系统搭建、实现、内容管理系统实现)

    1.   今日大纲 1.  实现商品的编辑 2.  实现商品的规格参数功能 3.  搭建前台系统 4.  实现首页商品类目的显示 2.2.4.   未实现TODO 编辑时图片回显: 思路: 1.  查 ...

  5. SpringMVC访问出错No converter found for return value of type

    在使用SSM整合的时候,spring mvc 添加@ResponseBody的时候,正常情况下都会返回json的.但是又的时候如果没有配置好的话,如果想要返回Map的json对象会报:No conve ...

  6. 再来看看Java的新特性——Stream流

    半年前开始试着使用Java的新特性,给我印象最深的就是Stream流和Optional.其中Stream提高了看法效率,让代码看起来十分清爽. 为什么要使用流? 摘要中已经说明了,为了提高开发效率.流 ...

  7. s01字符串---蓝桥杯

    问题描述 s01串初始为"0" 按以下方式变换 0变1,1变01 输入格式 1个整数(0~19) 输出格式 n次变换后s01串 样例输入 3 样例输出 101 数据规模和约定 0~ ...

  8. Unable to cast object of type 'System.Int32' to type 'System.String'.

    最近在研究.netcore,尝试把前后端完全分离.但是在写接口的时候,Post参数是FromBody的时候报错了 Microsoft.AspNetCore.Diagnostics.DeveloperE ...

  9. PhpMyadmin各版本漏洞合集

    1.PhpMyAdmin存在PREGREPLACEEVAL漏洞 影响版本: 3.5.x < 3.5.8.1 and 4.0.0 < 4.0.0-rc3 利用模块: exploit/mult ...

  10. springboot系列教程导学篇

    spring boot2.0系列教程学习之导学篇 springboot 2.0深度学习系列教程. Spring Boot 虽然凯哥从2015年年初开始就接触了spring boot.但是在之后的公司中 ...