网络流经典题里餐巾计划的加强版...天数变成了$10^5$,那就不能用费用流做了...

  考虑费用流的时候,单位费用随流量的增加而减少,也就是说费用其实是个单峰(下凸)函数。

  那么可以三分要买的餐巾个数,求费用可以用贪心。

  新买的没用就用新买的,否则能慢洗的慢洗,不能慢洗的拿最晚的快洗后可以当天用的去快洗。

  有一个错误的贪心是慢洗和快洗的都拿最早的,这样可能会导致快洗的本来可以洗时间更晚一些的,却洗了比较早的餐巾,而这些餐巾本可以在接下来的一天里通过慢洗来省下更多的钱。

#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<algorithm>
#define ll long long
using namespace std;
const int maxn=, inf=1e9;
struct poi{int tim, rest;}q1[maxn], q2[maxn], q3[maxn];
int d, n1, n2, c1, c2, tc, ans=inf;
int t[maxn];
inline void read(int &k)
{
int f=; k=; char c=getchar();
while(c<'' || c>'') c=='-'&&(f=-), c=getchar();
while(c<='' && c>='') k=k*+c-'', c=getchar();
k*=f;
}
inline int f(int x)
{
int ans=(tc-c2)*x;
int l1, r1, l2, r2, l3, r3;
l1=l2=l3=r1=; r2=r3=;
q1[].tim=-inf; q1[].rest=x;
for(int i=;i<=d;i++)
{
while(l1<=r1 && q1[l1].tim+n1<=i) q2[++r2]=q1[l1++];
while(l2<=r2 && q2[l2].tim+n2<=i) q3[++r3]=q2[l2++];
int rest=t[i];
while(rest)
{
if(l3<=r3)
{
if(q3[r3].rest>=rest) q3[r3].rest-=rest, ans+=rest*c2, rest=;
else ans+=q3[r3].rest*c2, rest-=q3[r3--].rest;
}
else if(l2<=r2)
{
if(q2[r2].rest>=rest) q2[r2].rest-=rest, ans+=rest*c1, rest=;
else ans+=q2[r2].rest*c1, rest-=q2[r2--].rest;
}
else return inf;
}
q1[++r1].tim=i; q1[r1].rest=t[i];
}
return ans;
}
int main()
{
read(d); read(n1); read(n2); read(c1); read(c2); read(tc);
int l=, r=;
for(int i=;i<=d;i++) read(t[i]), r+=t[i];
if(n1>n2) swap(n1, n2), swap(c1, c2);
if(c1<c2) n2=n1, c2=c1;
while(r-l>)
{
int mid1=l+(r-l)/, mid2=l+(r-l)*/;
if(f(mid1)==inf || f(mid1)>f(mid2)) l=mid1;
else r=mid2;
}
for(int i=l;i<=r;i++) ans=min(ans, f(i));
printf("%d\n", ans);
}

bzoj5164: 餐厅计划问题(三分+贪心)的更多相关文章

  1. BZOJ_1229_[USACO2008 Nov]toy 玩具_三分+贪心

    BZOJ_1229_[USACO2008 Nov]toy 玩具_三分+贪心 Description 玩具 [Chen Hu, 2006] Bessie的生日快到了, 她希望用D (1 <= D ...

  2. 【题解】CF1056F Write the Contest(三分+贪心+DP)

    [题解]CF1056F Write the Contest(三分+贪心+DP) 最优化问题的三个解决方法都套在一个题里了,真牛逼 最优解应该是怎样的,一定存在一种最优解是先完成了耗时长的任务再干别的( ...

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

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

  4. P4480-[BJWC2018]餐巾计划问题【三分,贪心】

    正题 题目链接:https://www.luogu.com.cn/problem/P4480 题目大意 \(n\)天,第\(i\)天需要\(a_i\)个餐巾. 每个餐巾价格为\(p\),使用完后有两种 ...

  5. BZOJ4868 [Shoi2017]期末考试 【三分 + 贪心】

    题目链接 BZOJ4868 题解 最后的答案决定于最后一个公布的成绩 显然这个是答案关于这个时间点是呈凸单调的 三分一下这个时间点 时间点固定,在这个时间前的人都会产生不愉快度,在这个时间前的科目可以 ...

  6. BZOJ1229 USACO2008 Nov toy 玩具 【三分+贪心】*

    BZOJ1229 USACO2008 Nov toy 玩具 Description 玩具 [Chen Hu, 2006] Bessie的生日快到了, 她希望用D (1 <= D <= 10 ...

  7. 【BZOJ4868】期末考试 [三分][贪心]

    期末考试 Time Limit: 20 Sec  Memory Limit: 512 MB[Submit][Status][Discuss] Description Input Output Samp ...

  8. BZOJ 1229 [USACO2008 Nov]toy 玩具(三分+贪心)

    [题木链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1229 [题目大意] 每天对玩具都有一定的需求ni,每天可以花f价值每条购买玩具, 当天 ...

  9. 【CCPC-Wannafly Winter Camp Day4 (Div1) I】咆咆咆哮(三分+贪心)

    点此看题面 大致题意: 有\(n\)张卡牌,每张卡牌有两种用法:使场上增加一个伤害为\(a_i\)的生物,或使场上所有生物伤害增加\(b_i\).求最大总伤害. 三分 我们可以三分使用\(a_i\)的 ...

随机推荐

  1. js实现60秒倒计时效果(使用了jQuery)

    今天碰到要实现一个类似那种短信验证码60秒倒计时的需求,好久不写js,有点手生.把代码记录下,方便后续查阅. 这里我用了jQuey,毕竟写起来简洁点.下面直接看效果和代码. 一.效果          ...

  2. WPF编程,通过Double Animation动态缩放控件的一种方法。

    原文:WPF编程,通过Double Animation动态缩放控件的一种方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/art ...

  3. mfc 动态为控件添加事件2

    重载窗口过程 为动态控件绑定事件 一.重载窗口过程处理函数 CWnd::WindowProc virtual LRESULT WindowProc( UINT message, WPARAM wPar ...

  4. Edit Distance问题在两种编程范式下的求解

    本文已授权 [Coding博客](https://blog.coding.net) 转载 前言 Edit Distance,中文叫做编辑距离,在文本处理等领域是一个重要的问题,以下是摘自于百度百科的定 ...

  5. Mysql的基本操作(一)增、删、改

    创建/增加(create创建,alter字段操作,insert插入) 创建数据库 create database 数据库名称 charset=utf8; # 例: create database te ...

  6. GitHub 新手教程 四,Git GUI 新手教程(1),OpenSSH Public Key

    1,从开始菜单 启动 Git GUI,或者运行: D:\soft\Git\cmd\git-gui.exe(D:\soft\Git 为您的 GitHub 安装文件夹) 2,获取 SSH 密钥: 3,点击 ...

  7. Fragment 使用总结

    1. 要深刻理解Fragment 的生命周期 2. Fragment.getActivity()并不能保证非空. 3.如果在Fragment中有异步的回调, 特别要注意此时Fragment 是否还at ...

  8. [2017BUAA软工助教]个人得分总表(至alpha结束)

    一.表 学号 第0次 week1 week2 week3 个人项目 附加1 结对项目 附加2 a团队 a团队得分 a贡献分 总分(不计) 总分(记) 15061119 7 9.5 12 9 45.75 ...

  9. git的使用与学习

    1.将本地项目推送到Github $ git remote add origin 仓库地址 // 关联远程仓库 $ git push origin master // 推送到远程仓库 如果远程仓库有本 ...

  10. Spring sprint @ first day

    前几天,我们讨论出任务划分.结合任务及个人情况,我认领校园网认证和网盘服务这块. 认证原理整3天,尝试编译2天,整合模块5天. 日期 时间 地点 工作 5.11 20:00 九实 下载mentohus ...