Description

众所周知,小C是个宅男,所以他的每天的食物要靠外卖来解决。小C现在有M元钱,他想知道这些钱他最多可以吃多少天。

餐厅提供N种食物,每种食物有两个属性,单价Pi和保质期Si,表示小C需要花Pi元才能买到足够一天吃的这种食物,并且需要在送到Si天内吃完,否则食物会变质,就不能吃了,若Si为0则意味着必须在送到当天吃完。另外,每次送餐需要额外F元送餐费。

Input

每个测试点包含多组测试数据;
每个测试数据第一行三个整数M,F,N,如题目描述中所述;
以下N行,每行两个整数,分别表示PiSi

Output

对于每个测试数据输出一行,表示最多可以吃的天数。

Sample Input

32 5 2
5 0
10 2
10 10 1
10 10
10 1 1
1 5

Sample Output

3
0
8

HINT

【数据规模及约定】

对于40%的数据,M,Si <= 2*10^6;

对于100%的数据,M, Si<= 10^18,1 ≤ T ≤ 50,1 ≤ F ≤ M,1 ≤ N ≤ 200,1 ≤ Pi ≤ M。

思路: 本题可以三分。

题解:
  我不能确保这种方法的正确性,因为迄今为止我还没有看到其他能够复杂度能够承受的办法,最起码这样做的话,
  数据是可以过的,当然不排除数据不够全面。因为送物品非常自由,没有任何限制,所以我们要找一个合适的自变
  量进行枚举。可以发现,如果我们外卖的次数过少,那么就会出现一些食品性价比不高的情况;如果次数过多,
  那么就会浪费外卖运费。故可以从这里入手,因为可以看出这是一个类似于二次函数的函数。我们可以通过三分来查找峰值。
  那么对于每次的求值,就是以贪心为主体了。因为我们显然要价格便宜,保质期又长的食品,故我们将同保质期但
  价格偏高的去除,然后根据保质期从大到小排序,我们给每一次送餐都加上一个该食品,直到钱不够或者时间已经超过。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define R register int
 4 #define rep(i,a,b) for(R i=a;i<=b;i++)
 5 #define Rep(i,a,b) for(R i=a;i>=b;i--)
 6 #define ms(i,a)    memset(a,i,sizeof(a))
 7 #define gc()       getchar()
 8 #define LL         long long
 9 typedef pair<LL,LL>  pi;
10 template<class T>void read(T &x){
11   x=0; char c=0;
12   while (!isdigit(c)) c=gc();
13   while (isdigit(c)) x=x*10+(c^48),c=gc();
14 }
15 int const N=210;
16 LL n,m,f,l,r,len,m1,m2,nn;
17 pi s1,s2,ans;
18 struct node{
19   LL p,s;
20 }a[N];
21 int cmp(node a,node b){
22   return a.s==b.s?  a.p<b.p: a.s> b.s;
23 }
24
25 pi calc(LL k){
26   LL t=m-f*k,d=0,now=0,j;
27   Rep(i,nn,1){
28     if(a[i].s>=d) j=min(t/a[i].p/k,a[i].s-d+1),d+=j,now+=j*k,t-=j*a[i].p*k;
29     if(a[i].s>=d) j=min(t/a[i].p,k),d++,now+=j,t-=j*a[i].p;
30   }
31   return pi(now,t);
32 }
33
34 int main(){
35   while (scanf("%lld%lld%lld",&m,&f,&n)!=EOF){
36     ans=pi(0,0);
37     rep(i,1,n) read(a[i].p),read(a[i].s);
38     sort(a+1,a+n+1,cmp);nn=1;
39     rep(i,2,n) if(a[nn].s>a[i].s && a[i].p<a[nn].p) a[++nn]=a[i];
40     l=1,r=m/(f+a[nn].p);
41     while (l<=r){
42       len=(r-l)/3;
43       if( (s1=calc(m1=l+len))>(s2=calc(m2=r-len))) ans=max(ans,s1),r=m2-1;else ans=max(ans,s2),l=m1+1;
44     }
45     cout<<ans.first<<endl;
46   }
47   return 0;
48 }

View Code

转载于:https://www.cnblogs.com/ZJXXCN/p/10250336.html

bzoj 2832 宅男小c相关推荐

  1. 【bzoj2832】宅男小C

    Description 众所周知,小C是个宅男,所以他的每天的食物要靠外卖来解决.小C现在有M元钱,他想知道这些钱他最多可以吃多少天. 餐厅提供N种食物,每种食物有两个属性,单价Pi和保质期Si,表示 ...

  2. 小妲己智能机器人要连接wifi吗_腾讯智能机器人妲己上线 万千宅男的梦即将实现...

    腾讯智能机器人妲己上线 万千宅男的梦即将实现 重点不止于此,看官方活动介绍发现,这个DIY游戏可不是纯玩那么简单."星空魅影"妲己.女仆咖啡妲己机器人,妲己要出机器人啦!?目前,& ...

  3. 宅男必备福利壁纸大全自动采集微信小程序源码带动态壁纸支持多种流量主

    这是一款可以说是宅男的最爱 也可以说是专门给宅男准备的一款小程序吧 里面支持动态视频,静态壁纸,情侣头像等多种分类 保存内容支持每天激励视频解锁保存 全内容自动采集,内附含了数不清的小姐姐,二次元,各 ...

  4. 小程序源码:宅男必备福利壁纸大全自动采集微信小程序

    这是一款可以说是宅男的最爱 也可以说是专门给宅男准备的一款小程序吧 里面支持动态视频,静态壁纸,情侣头像等多种分类 保存内容支持每天激励视频解锁保存 全内容自动采集,内附含了数不清的小姐姐,二次元,各 ...

  5. 头像秒变像素风,宅男大叔自学AI打造大师级水准,火爆推特

    ↑ 点击蓝字 关注极市平台 来源丨量子位 极市导读 最近,一位日本宅男大叔佐藤做了一个AI生成肖像画的网站AI Gahaku,10天内用户访问量从0暴增到100万,引爆推特.>>就在明天, ...

  6. 外卖(food) 洛谷4040宅男计划 三分套二分贪心

    food评测传送门 [题目描述] 叫外卖是一个技术活,宅男宅女们一直面对着一个很大的矛盾,如何以有限的金钱在宿舍宅得尽量久.     外卖店一共有 N 种食物,每种食物有固定的价钱 Pi 与保质期 S ...

  7. 宅男程序员给老婆的计算机课程

    声明: Technorati 标记: IT生活 本文档来自:http://developer.51cto.com/art/201203/321936.htm 宅男程序员给老婆的计算机课程之0:认清本质 ...

  8. ed是什么梗_花泽香菜不笑了什么梗怎么回事?花泽香菜为什么是宅男女神?

    花泽香菜,是日本的声优,她不仅长相萌,声音才是真的萌.因为参与配音了很多日漫,在加上是童星出身,在日本拥有很高的人气(花泽香菜为什么那么火),被称为"宅男女神".据悉,花泽香菜平时 ...

  9. 宅男程序员给老婆的计算机课程之8:控制器

    设计模式再"高级"一点,便是所谓的"框架"了. 从事Web开发,一般都会接触到MVC框架这个概念. M:也就是Model,直接跟网站数据库相关. V:也就是Vi ...

最新文章

  1. 如何利用神经网络结合遗传算法进行非线性函数极值寻优(2)
  2. list_for_each引起的问题
  3. idea + Maven + Spring + myBatis的单元测试
  4. delphi获取当前计算机所有盘符
  5. python bashplotlib_Matplotlib 中文用户指南 7.2 Python shell 中使用 Matplotlib
  6. Centos6.x搭建lnmp环境
  7. rs232读取智能电表_【技术文章】蜂窝物联网PoC为智能电表连接指引路向
  8. 使用application log 分析navigation target解析错误
  9. 全球顶级大学,在中国录取率却不足0.5%,答案一针见血!
  10. 尼康d850相机参数测试软件,尼康 - D850 - 产品介绍
  11. Arduino笔记-WeMos D1通过HTTP亮熄灯
  12. (50)FPGA状态机描述(三段式)
  13. 巧用层次坐标解决统计图分类轴与系列取值
  14. lingo姜启源数学模型接力队选拔问题实现实例
  15. WPF NotifyIcon使用
  16. 机器人学习笔记(3) 正运动学和逆运动学
  17. html如何书页样式,CSS案例:实现书页任意折角效果
  18. 学好线性代数,我推荐这本书
  19. 计算机键盘时好时坏,电脑鼠标时好时坏的解决方法
  20. ENET库(可靠UDP)

热门文章

  1. TechWeb祝大家新年快乐!愿你心有光亮 自予光芒!
  2. 你真明白 Python 装饰器么?
  3. MySQL数据库是什么?有什么优点?
  4. python筛选csv数据_pandas数据筛选和csv操作的实现方法
  5. nodejs实践录:pm2实验测试记录
  6. log4j的8个日志级别(OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、 ALL)
  7. 拉普拉斯变换_拉普拉斯变化(s变换)定义与性质
  8. 80-30-040-原理-React模式-简介2
  9. 【Elasticsearch】 es ElasticSearch集群故障案例分析: 警惕通配符查询 Wildcard
  10. 【Elasticsearch】Elasticsearch filter和query的不同