【BZOJ3874】[AHOI&JSOI2014]宅男计划(贪心,三分)
【BZOJ3874】[AHOI&JSOI2014]宅男计划(贪心,三分)
题面
题解
大力猜想一最长的天数和购买外卖的总次数是单峰的。感性理解一下就是买\(0\)次是\(0\),买\(inf\)次也是\(0\),在中间某次可能取到最优值。然而这样子可能是多峰的,所以也可以退火处理。
现在假装我们知道了购买外卖的总次数\(k\),那么我们的问题就变成了如何确定每种外卖购买方案。
首先将所有外卖按照价格排序,显然只要没有过期那么一定会购买尽可能多的更便宜的外卖。
假设对于最便宜的外卖,其过期的天数是\(s\),那么我们一定会在每次购买的时候都买\(s\)份,那么接下来的每一份外卖都是类似的处理。
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
#define ll long long
inline ll read()
{
ll x=0;bool t=false;char ch=getchar();
while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();
if(ch=='-')t=true,ch=getchar();
while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();
return t?-x:x;
}
ll m,F,n;
struct Food{ll p,s;}p[250];
bool operator<(Food a,Food b){return a.p<b.p;}
ll Calc(ll c)
{
ll M=m-F*c,ans=0,t=0;if(M<=0)return 0;
for(int i=1;i<=n;++i)
if(p[i].s>t)
{
ll d=p[i].s-t;
if(1.0*p[i].p*c*d<=M)ans+=c*d,M-=p[i].p*c*d;
else{ans+=M/p[i].p;break;}
t=p[i].s;
}
return ans;
}
int main()
{
m=read();F=read();n=read();
for(int i=1;i<=n;++i)p[i].p=read(),p[i].s=read()+1;
sort(&p[1],&p[n+1]);
ll l=0,r=m/F,ret=0;
while(r-l>=5)
{
ll p0=l+(r-l+1)/3,p1=r-(r-l+1)/3;
ll d0=Calc(p0),d1=Calc(p1);
if(d0<=d1)l=p0;else r=p1;
}
for(ll i=l;i<=r;++i)ret=max(ret,Calc(i));
printf("%lld\n",ret);
return 0;
}
【BZOJ3874】[AHOI&JSOI2014]宅男计划(贪心,三分)的更多相关文章
- Luogu4040 AHOI/JSOI2014 宅男计划 贪心、二分、三分
传送门 仍然对"为什么这个函数单峰"的问题毫无理解 首先,对于保质期又低.价格又贵的食物,我们显然不需要购买它.所以如果设\(pri_i\)表示保质期不小于\(i\)的所有食品中价 ...
- BZOJ3874:[AHOI2014&JSOI2014]宅男计划(爬山法)
Description [故事背景] 自从迷上了拼图,JYY就变成了个彻底的宅男.为了解决温饱问题,JYY 不得不依靠叫外卖来维持生计. [问题描述] 外卖店一共有N种食物,分别有1到N编号.第i种 ...
- 洛谷$P4040\ [AHOI2014/JSOI2014]$宅男计划 贪心
正解:三分+贪心 解题报告: 传送门$QwQ$ 其实很久以前的寒假就考过了,,,但那时候$gql$没有好好落实,就只写了个二分,并没有二分套三分,就只拿到了$70pts$ #include <b ...
- Bzoj 3874: [Ahoi2014&Jsoi2014]宅男计划 三分+贪心
3874: [Ahoi2014&Jsoi2014]宅男计划 Time Limit: 1 Sec Memory Limit: 256 MBSubmit: 861 Solved: 336[Su ...
- bzoj3874&2832 [Ahoi2014]宅男计划 模拟退火,三分
[Ahoi2014&Jsoi2014]宅男计划 Time Limit: 1 Sec Memory Limit: 256 MBSubmit: 962 Solved: 371[Submit][ ...
- [luogu] P4040 [AHOI2014/JSOI2014]宅男计划(贪心)
P4040 [AHOI2014/JSOI2014]宅男计划 题目背景 自从迷上了拼图,JYY就变成了个彻底的宅男.为了解决温饱问题,JYY不得不依靠叫外卖来维持生计. 题目描述 外卖店一共有N种食物, ...
- bzoj 3874: [Ahoi2014&Jsoi2014]宅男计划
Description 外卖店一共有N种食物,分别有1到N编号.第i种食物有固定的价钱Pi和保质期Si.第i种食物会在Si天后过期.JYY是不会吃过期食物的. 比如JYY如果今天点了一份保质期为1天的 ...
- food(洛谷P4040 [AHOI2014/JSOI2014]宅男计划)
题目在这里 题目描述 外卖店一共有N种食物,分别有1到N编号.第i种食物有固定的价钱Pi和保质期Si.第i种食物会在Si天后过期.JYY是不会吃过期食物的. 比如JYY如果今天点了一份保质期为1天的食 ...
- Luogu P4040 [AHOI2014/JSOI2014]宅男计划
题目 显然存活天数与叫外卖次数的函数是凸函数. 所以三分买外卖的次数. 然后把食品按保质期升序排序. 并且单调栈搞一下,把又贵又保质期短的丢掉. 那么随着保质期的增加,食品的价格一定上涨. 所以我们从 ...
随机推荐
- Django 中的Form、ModelForm
一.ModelForm 源码 class ModelForm(BaseModelForm, metaclass=ModelFormMetaclass): pass def modelform_fact ...
- Django lazy load 懒加载 倒序查询
Django orm默认懒加载 Django orm默认使用的懒加载,即使用的时候才去访问数据库,且每次默认取最少的数据,当然这样有好处也有坏处... 坏处: 会导致频繁的查询数据库,如涉及到外键 ...
- MySQL中有关NULL的计算
mysql> select NULL=NULL; #判断两个NULL是否相等,结果不是1也不是0 +-----------+ | NULL=NULL | +-----------+ | NULL ...
- 简述HTTP协议
引言 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网服务器传输超文本到本地浏览器的传送协议.HTTP 是基于 TCP/IP 协议通信协议 ...
- Azure系列2.1.10 —— CloudBlobClient
(小弟自学Azure,文中有不正确之处,请路过各位大神指正.) 网上azure的资料较少,尤其是API,全是英文的,中文资料更是少之又少.这次由于公司项目需要使用Azure,所以对Azure的一些学习 ...
- CMake--List用法
list(LENGTH <list><output variable>) list(GET <list> <elementindex> [<ele ...
- "errcode":40163,"errmsg":"code been used...报错,做PC微信登录时出现code been used...报错问题
这是一个坑,一个巨坑,一个恶心的坑 出现这个问题的大概意思就是微信回调了两次登录接口,code使用了两次,而在微信官方文档上写着code只能用一次,用来获取access_token,但我TM看着就糊涂 ...
- js的日期操作:String转date日期格式、求日期差
一.在js中String类型转成date格式 var date = new Date("2018-9-21 14:58:43");//就是这么简单 二.date转String类型就 ...
- .Net在操作mysql查询的时候出现“: Unknown column 'UserName' in 'where clause'”错误
今天使用.Net操作mysql查询的时候,如果加上条件查询的时候就会出现 Unknown column 'UserName' in 'where clause'这个错,不加条件直接select * f ...
- Django--权限信息操作
一 . 权限控制 表结构的设计 rbca(Role Based Access Control) 基于角色的权限控制 3个model 5张表 class User(models.Model): # ...