题目

显然存活天数与叫外卖次数的函数是凸函数。

所以三分买外卖的次数。

然后把食品按保质期升序排序。

并且单调栈搞一下,把又贵又保质期短的丢掉。

那么随着保质期的增加,食品的价格一定上涨。

所以我们从前往后买,能买多少买对少。

#include<bits/stdc++.h>
#define LL long long
using namespace std;
const int N=207;
LL m,f;int n,top;
struct node{LL v,t;}a[N],b[N];
int operator<(node a,node b){return a.t<b.t;}
LL read(){LL x;scanf("%lld",&x);return x;}
LL cal(LL x)
{
LL res=m-x*f,now=0,t,s=0;
if(res<0) return 0;
for(int i=1;i<=top;++i)
{
t=min(b[i].t-now,res/(b[i].v*x)),now+=t,s+=t*x,res-=b[i].v*t*x;
if(now<b[i].t) {s+=res/b[i].v;break;}
}
return s;
}
int main()
{
m=read(),f=read(),n=read();int i;LL l=1,r=m/f,m1,m2,x,s1,s2,ans=0;
for(i=1;i<=n;++i) a[i]=(node){read(),read()+1};
sort(a+1,a+n+1);
for(i=1;i<=n;b[++top]=a[i],++i) while(top&&a[i].v<=b[top].v) --top;
while(l<=r) x=r-l+1,m1=l+x/3,m2=l+x*2/3,s1=cal(m1),s2=cal(m2),ans=max(ans,(s1<s2? l=m1+1,s2:r=m2-1,s1));
return !printf("%lld",ans);
}

Luogu P4040 [AHOI2014/JSOI2014]宅男计划的更多相关文章

  1. [luogu] P4040 [AHOI2014/JSOI2014]宅男计划(贪心)

    P4040 [AHOI2014/JSOI2014]宅男计划 题目背景 自从迷上了拼图,JYY就变成了个彻底的宅男.为了解决温饱问题,JYY不得不依靠叫外卖来维持生计. 题目描述 外卖店一共有N种食物, ...

  2. food(洛谷P4040 [AHOI2014/JSOI2014]宅男计划)

    题目在这里 题目描述 外卖店一共有N种食物,分别有1到N编号.第i种食物有固定的价钱Pi和保质期Si.第i种食物会在Si天后过期.JYY是不会吃过期食物的. 比如JYY如果今天点了一份保质期为1天的食 ...

  3. 洛谷$P4040\ [AHOI2014/JSOI2014]$宅男计划 贪心

    正解:三分+贪心 解题报告: 传送门$QwQ$ 其实很久以前的寒假就考过了,,,但那时候$gql$没有好好落实,就只写了个二分,并没有二分套三分,就只拿到了$70pts$ #include <b ...

  4. Bzoj 3874: [Ahoi2014&Jsoi2014]宅男计划 三分+贪心

    3874: [Ahoi2014&Jsoi2014]宅男计划 Time Limit: 1 Sec  Memory Limit: 256 MBSubmit: 861  Solved: 336[Su ...

  5. BZOJ3874:[AHOI2014&JSOI2014]宅男计划(爬山法)

    Description  [故事背景] 自从迷上了拼图,JYY就变成了个彻底的宅男.为了解决温饱问题,JYY 不得不依靠叫外卖来维持生计. [问题描述] 外卖店一共有N种食物,分别有1到N编号.第i种 ...

  6. bzoj 3874: [Ahoi2014&Jsoi2014]宅男计划

    Description 外卖店一共有N种食物,分别有1到N编号.第i种食物有固定的价钱Pi和保质期Si.第i种食物会在Si天后过期.JYY是不会吃过期食物的. 比如JYY如果今天点了一份保质期为1天的 ...

  7. 【BZOJ3874】[AHOI&JSOI2014]宅男计划(贪心,三分)

    [BZOJ3874][AHOI&JSOI2014]宅男计划(贪心,三分) 题面 BZOJ 洛谷 题解 大力猜想一最长的天数和购买外卖的总次数是单峰的.感性理解一下就是买\(0\)次是\(0\) ...

  8. Luogu4040 AHOI/JSOI2014 宅男计划 贪心、二分、三分

    传送门 仍然对"为什么这个函数单峰"的问题毫无理解 首先,对于保质期又低.价格又贵的食物,我们显然不需要购买它.所以如果设\(pri_i\)表示保质期不小于\(i\)的所有食品中价 ...

  9. bzoj3874&2832 [Ahoi2014]宅男计划 模拟退火,三分

    [Ahoi2014&Jsoi2014]宅男计划 Time Limit: 1 Sec  Memory Limit: 256 MBSubmit: 962  Solved: 371[Submit][ ...

随机推荐

  1. 【初中部 NOIP提高组 二试】模拟赛B总结

    今天的比赛大翻车了,惨败. 第一题是一道模拟找规律题,由于一些计算错误,没有认真对拍,本来送的100分有40分飞走了~~ 第二题是在一个结论基础上的dp加单调队列,比赛上没有搞出那个结论,打了个n^3 ...

  2. 9. ClustrixDB主从复制

    一.在线添加从库 主集群: 10.1.1.23:5306 从集群: 10.1.3.88:5306 主库开启binlog MySQL [(none)]> CREATE BINLOG 'clustr ...

  3. 查看有没有绑这个host

    1.查看有没有绑这个host ping broker.vs.amap.com

  4. MFC多文档获取窗口句柄

    GET App   AfxGetInstanceHandle()    AfxGetApp()   GET Frame->View->Document     SDI    AfxGetM ...

  5. 消息队列之--Kafak

    序言 消息丢失如何解决? 解耦 异步 并行 Docker安装Kafak 1.下载镜像 # zookeeper镜像 docker pull wurstmeister/zookeeper # kafka镜 ...

  6. POJ 3260 The Fewest Coins(完全背包+多重背包=混合背包)

    题目代号:POJ 3260 题目链接:http://poj.org/problem?id=3260 The Fewest Coins Time Limit: 2000MS Memory Limit: ...

  7. Linux简介安装、系统启动过程、目录结构

    Linux简介安装.系统启动过程.目录结构 Linux 教程 Linux 英文解释为 Linux is not Unix. Linux 简介 Linux内核最初只是由芬兰人李纳斯·托瓦兹(Linus ...

  8. 3.并发编程-ReentrantLock 细节说明

    并发编程-ReentrantLock 细节说明 ---title: 并发编程-ReentrantLock 细节说明date: 2018-07-05 09:06:57categories: - 并发编程 ...

  9. 使用GitHub(一):添加SSHkey

    使用GitHub(一):添加SSHkey 本文简单介绍使用GitHub对代码进行版本控制,包括添加SSHkey.配置Git.使用Git创建版本库并在GitHub上进行管理,主要目的是对学习内容进行总结 ...

  10. Spring MVC过滤器HiddenHttpMethodFilter

    浏览器form表单只支持GET与POST请求,而DELETE.PUT等method并不支持,spring3.0添加了一个过滤器,可以将这些请求转换为标准的http方法,使得支持GET.POST.PUT ...