BZOJ 1899&&luogu P2577: [Zjoi2004]Lunch 午餐 贪心+DP
贪它,再大力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的更多相关文章
- 【BZOJ1899】[Zjoi2004]Lunch 午餐 贪心+DP
[BZOJ1899][Zjoi2004]Lunch 午餐 Description 上午的训练结束了,THU ACM小组集体去吃午餐,他们一行N人来到了著名的十食堂.这里有两个打饭的窗口,每个窗口同一时 ...
- BZOJ1899 [Zjoi2004]Lunch 午餐 贪心+DP
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=1899 题解 如果只有一个窗口,那么可以这样考虑:因为最后一个人打完饭的时间是固定的,那么不如就 ...
- bzoj 1899: [Zjoi2004]Lunch 午餐
Description 上午的训练结束了,THU ACM小组集体去吃午餐,他们一行N人来到了著名的十食堂.这里有两个打饭的窗口,每个窗口同一时刻只能给一个人打饭.由于每个人的口味(以及胃口)不同,所以 ...
- 【bzoj1899】[Zjoi2004]Lunch 午餐(贪心+dp)
题目传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=1899 显然为了节省时间,吃饭慢的人要先打饭.于是我们可以先把所有人按吃饭时间排序,于是 ...
- 【bzoj1899】[Zjoi2004]Lunch 午餐 dp
题目描述 上午的训练结束了,THU ACM小组集体去吃午餐,他们一行N人来到了著名的十食堂.这里有两个打饭的窗口,每个窗口同一时刻只能给一个人打饭.由于每个人的口味(以及胃口)不同,所以他们要吃的菜各 ...
- Bzoj1899: [Zjoi2004]Lunch 午餐
题面 传送门 Sol 首先显然吃饭久的要排在前面 之后再来分配队伍,设\(f[i][j]\)表示到第\(i\)个人,\(A\)队伍要等\(j\)的最小吃完饭时间 那么就是一个简单的背包吧... # i ...
- [BZOJ1899][ZJOI2004]Lunch 午餐 (DP)
比较水的DP 但是比较难想 整体思路还是很好理解的 在洛谷的题解里有一个一维的 > 什么时候去看一下 下面发我的代码 #include<bits/stdc++.h> #define ...
- luogu 2577 [ZJOI2005]午餐 贪心+dp
发现让 $b$ 更大的越靠前越优,然后依次决策将每个人分给哪个窗口. 令 $f[i][j]$ 表示考虑了前 $i$ 个人,且第一个窗口的总等待时间为 $j$ 的最小总时间. 然后转移一下就好了~ #i ...
- [luogu P2647] 最大收益(贪心+dp)
题目传送门:https://www.luogu.org/problem/show?pid=2647 题目描述 现在你面前有n个物品,编号分别为1,2,3,--,n.你可以在这当中任意选择任意多个物品. ...
随机推荐
- cocos2d-x中CCScrollView纵向展示
最近写CCScrollView遇到很多问题,样式是竖直的类似tableview,在此记录下: CCLayer* layer; 初始化scrollview内容器层 layer = CCLayer::cr ...
- html5--1.14 特殊符号的使用
html5--1.14 特殊符号的使用 学习要点: 实体的概念一个表格小实例 1.HTML 实体 在 HTML 中,某些字符是预留的. 在 HTML 中不能使用小于号(<)和大于号(&am ...
- 使用 DNSPOD API 实现域名动态解析
0. 简单概述在家里放一个 NAS 服务器,但是宽带的 IP 地址经常改变,一般路由器自带的花生壳域名解析可以解决,如果路由器没有类似功能或者想使用自己的域名,可以尝试使用 DNSPOD API 来实 ...
- centos7下面搭建lnmp环境
参考大神博客: http://www.linuxzen.com/lnmphuan-jing-da-jian-wan-quan-shou-ce-si-lnmpda-jian-yuan-ma-an-zhu ...
- 基于jQuery Ajax实现无刷新文件上传
最近因项目需求更改,需要实现选择文件后即时上传至服务器,然后提交后,加载xls表格内容到jqgrid表格中,文件上传功能实现示例: 前端jsp页面: <form id="uploadF ...
- 001-Bootstrap栅格系统
1 安装和基本使用 外文官网 中文官网 可以正常下载使用 有三个文件夹, 分别是css, fonts, js bootstrap/ ├── css/ │ ├── bootstrap.css │ ├── ...
- 百度之星2017初赛A
雪崩,没晋级,补题 1001 分析:求n-1的约数个数 #include "iostream" #include "cstdio" #include " ...
- 打开关闭tomcat的目录浏览功能
目录浏览功能 conf/web.xml中init-param中有对于listing的定义,设置为true即可实现tomcat的目录浏览: tomcat的管理用户设置 conf/tomcat-users ...
- IP简介2
本笔记介绍java net IP A 类 主要是大型的交换机 1-126 B类 128-191 分配给各个国家的典型的服务器 每个网段支持255*255个设备 每一个B类都可以分配444416个C ...
- [poj1830]开关问题(高斯消元)
题意:求高斯消元中自由元的个数,输出1<<ans; #include<cstdio> #include<cstdlib> #include<cstring&g ...