贪它,再大力DP(话说觉得此题简单的真的是大佬QAQ)我想了两天。。。QWQ


贪心:吃饭慢的先打饭(不太会证。。。)

DP:f[i][j]表示前i个人,在1号窗口打饭的总时间时j,的最短时间

  确定i的时候,通过j,可以算出在二号窗口打饭的总时间。。

所以有:

  第i个人在1号窗口:if(j>=a[i].t) f[i][j]=min(f[i][j],max(f[i-1][j-a[i].t],j+a[i].w));

  第i个人在2号窗口:f[i][j]=min(f[i][j],max(f[i-1][j],d[i]-j+a[i].w));

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#define R register int
using namespace std;
inline int g() {
R ret=,fix=; register char ch; while(!isdigit(ch=getchar())) fix=ch=='-'?-:fix;
do ret=ret*+(ch^); while(isdigit(ch=getchar())); return ret*fix;
}
struct node{int t,w; bool operator <(const node& y)const{return w>y.w;}}a[];
int n,f[][],d[],ans=0x3f3f3f3f;
signed main() {
n=g(); for(R i=;i<=n;++i) a[i].t=g(),a[i].w=g();
sort(a+,a+n+); memset(f,0x3f,sizeof f); f[][]=;
for(R i=;i<=n;++i) d[i]=d[i-]+a[i].t;
for(R i=;i<=n;++i) for(R j=;j<=d[i];++j) {
if(j>=a[i].t) f[i][j]=min(f[i][j],max(f[i-][j-a[i].t],j+a[i].w));
f[i][j]=min(f[i][j],max(f[i-][j],d[i]-j+a[i].w));
} for(R i=;i<=d[n];++i) ans=min(ans,f[n][i]); printf("%d\n",ans);
}

然后可以顺便压成一维的。。。(不知为何跑的飞快QAQ)

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#define R register int
using namespace std;
inline int g() {
R ret=,fix=; register char ch; while(!isdigit(ch=getchar())) fix=ch=='-'?-:fix;
do ret=ret*+(ch^); while(isdigit(ch=getchar())); return ret*fix;
}
struct node{int t,w; bool operator <(const node& y)const{return w>y.w;}}a[];
int n,f[],d[],ans=0x3f3f3f3f;
signed main() {
n=g(); for(R i=;i<=n;++i) a[i].t=g(),a[i].w=g();
sort(a+,a+n+); memset(f,0x3f,sizeof f); f[]=;
for(R i=;i<=n;++i) d[i]=d[i-]+a[i].t;
memset(f,0x3f,sizeof f); f[]=;
for(R i=;i<=n;++i) for(R j=d[i-];j>=;--j){
f[j+a[i].t]=min(f[j+a[i].t],max(f[j],j+a[i].t+a[i].w));
f[j]=max(f[j],d[i-]-j+a[i].t+a[i].w);
} for(R i=;i<=d[n];++i) ans=min(ans,f[i]); printf("%d\n",ans);
}

2019.04.07/08

BZOJ 1899&&luogu P2577: [Zjoi2004]Lunch 午餐 贪心+DP的更多相关文章

  1. 【BZOJ1899】[Zjoi2004]Lunch 午餐 贪心+DP

    [BZOJ1899][Zjoi2004]Lunch 午餐 Description 上午的训练结束了,THU ACM小组集体去吃午餐,他们一行N人来到了著名的十食堂.这里有两个打饭的窗口,每个窗口同一时 ...

  2. BZOJ1899 [Zjoi2004]Lunch 午餐 贪心+DP

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=1899 题解 如果只有一个窗口,那么可以这样考虑:因为最后一个人打完饭的时间是固定的,那么不如就 ...

  3. bzoj 1899: [Zjoi2004]Lunch 午餐

    Description 上午的训练结束了,THU ACM小组集体去吃午餐,他们一行N人来到了著名的十食堂.这里有两个打饭的窗口,每个窗口同一时刻只能给一个人打饭.由于每个人的口味(以及胃口)不同,所以 ...

  4. 【bzoj1899】[Zjoi2004]Lunch 午餐(贪心+dp)

    题目传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=1899 显然为了节省时间,吃饭慢的人要先打饭.于是我们可以先把所有人按吃饭时间排序,于是 ...

  5. 【bzoj1899】[Zjoi2004]Lunch 午餐 dp

    题目描述 上午的训练结束了,THU ACM小组集体去吃午餐,他们一行N人来到了著名的十食堂.这里有两个打饭的窗口,每个窗口同一时刻只能给一个人打饭.由于每个人的口味(以及胃口)不同,所以他们要吃的菜各 ...

  6. Bzoj1899: [Zjoi2004]Lunch 午餐

    题面 传送门 Sol 首先显然吃饭久的要排在前面 之后再来分配队伍,设\(f[i][j]\)表示到第\(i\)个人,\(A\)队伍要等\(j\)的最小吃完饭时间 那么就是一个简单的背包吧... # i ...

  7. [BZOJ1899][ZJOI2004]Lunch 午餐 (DP)

    比较水的DP 但是比较难想 整体思路还是很好理解的 在洛谷的题解里有一个一维的 > 什么时候去看一下 下面发我的代码 #include<bits/stdc++.h> #define ...

  8. luogu 2577 [ZJOI2005]午餐 贪心+dp

    发现让 $b$ 更大的越靠前越优,然后依次决策将每个人分给哪个窗口. 令 $f[i][j]$ 表示考虑了前 $i$ 个人,且第一个窗口的总等待时间为 $j$ 的最小总时间. 然后转移一下就好了~ #i ...

  9. [luogu P2647] 最大收益(贪心+dp)

    题目传送门:https://www.luogu.org/problem/show?pid=2647 题目描述 现在你面前有n个物品,编号分别为1,2,3,--,n.你可以在这当中任意选择任意多个物品. ...

随机推荐

  1. cocos2d-x中CCScrollView纵向展示

    最近写CCScrollView遇到很多问题,样式是竖直的类似tableview,在此记录下: CCLayer* layer; 初始化scrollview内容器层 layer = CCLayer::cr ...

  2. html5--1.14 特殊符号的使用

    html5--1.14 特殊符号的使用 学习要点: 实体的概念一个表格小实例 1.HTML 实体 在 HTML 中,某些字符是预留的. 在 HTML 中不能使用小于号(&lt)和大于号(&am ...

  3. 使用 DNSPOD API 实现域名动态解析

    0. 简单概述在家里放一个 NAS 服务器,但是宽带的 IP 地址经常改变,一般路由器自带的花生壳域名解析可以解决,如果路由器没有类似功能或者想使用自己的域名,可以尝试使用 DNSPOD API 来实 ...

  4. centos7下面搭建lnmp环境

    参考大神博客: http://www.linuxzen.com/lnmphuan-jing-da-jian-wan-quan-shou-ce-si-lnmpda-jian-yuan-ma-an-zhu ...

  5. 基于jQuery Ajax实现无刷新文件上传

    最近因项目需求更改,需要实现选择文件后即时上传至服务器,然后提交后,加载xls表格内容到jqgrid表格中,文件上传功能实现示例: 前端jsp页面: <form id="uploadF ...

  6. 001-Bootstrap栅格系统

    1 安装和基本使用 外文官网 中文官网 可以正常下载使用 有三个文件夹, 分别是css, fonts, js bootstrap/ ├── css/ │ ├── bootstrap.css │ ├── ...

  7. 百度之星2017初赛A

    雪崩,没晋级,补题 1001 分析:求n-1的约数个数 #include "iostream" #include "cstdio" #include " ...

  8. 打开关闭tomcat的目录浏览功能

    目录浏览功能 conf/web.xml中init-param中有对于listing的定义,设置为true即可实现tomcat的目录浏览: tomcat的管理用户设置 conf/tomcat-users ...

  9. IP简介2

    本笔记介绍java net IP A 类 主要是大型的交换机 1-126  B类 128-191 分配给各个国家的典型的服务器 每个网段支持255*255个设备  每一个B类都可以分配444416个C ...

  10. [poj1830]开关问题(高斯消元)

    题意:求高斯消元中自由元的个数,输出1<<ans; #include<cstdio> #include<cstdlib> #include<cstring&g ...