题面:https://www.luogu.org/problem/P2577

本题一旦设出f[i][j]表示前i个人,在1号窗口打饭总时间j,最早吃完饭的时间
那么就很容易想到
当把i放在1号窗口
f[i][j] = min(f[i][j], max(f[i-1][j-s[i].a], j+s[i].b))
f[i-1][j-s[i].a]即第i个人吃饭+打饭时间<=前i-1人吃完饭的时间
j+s[i].b即第i个人吃饭+打饭时间>前i-1人吃完饭的时间
当把i放在2号窗口
f[i][j] = min(f[i][j], max(f[i-1][j], sum[i]-j+s[i].b));
注意这里需要维护一个前缀和,然后就可以用sum[i]-j表示在2号窗口打饭总时间了.Code:
#include<bits/stdc++.h>
using namespace std;
const int N = 210;
int f[N][N*N];
struct node
{int a, b;bool operator <(node z) const{return b>z.b;}
}s[N];
int sum[N];
int main()
{int n;scanf("%d", &n);for(int i = 1; i <= n; i++)scanf("%d %d", &s[i].a, &s[i].b);sort(s+1, s+1+n);for(int i = 1; i <= n; i++)sum[i] = sum[i-1] + s[i].a;memset(f, 127, sizeof(f));f[0][0] = 0;for(int i = 1; i <= n; i++){for(int j = 0; j <= sum[i]; j++){if(j>=s[i].a) f[i][j] = min(f[i][j], max(f[i-1][j-s[i].a], j+s[i].b));f[i][j] = min(f[i][j], max(f[i-1][j], sum[i]-j+s[i].b));}}int ans = 2147483647;for(int i = 0; i <= sum[n]; i++)ans = min(ans, f[n][i]);printf("%d\n", ans);return 0;
}

转载于:https://www.cnblogs.com/ukcxrtjr/p/11567180.html

P2577 [ZJOI2005]午餐相关推荐

  1. Luogu P2577 [ZJOI2005]午餐

    一道贪心+类背包DP的好题 首先发现一个十分显然的性质,没有这个性质整道题目都难以下手: 无论两队的顺序如何,总是让吃饭慢的人先排队 这是一个很显然的贪心,因为如果让吃饭慢的排在后面要更多的时间至少没 ...

  2. ZJOI2005午餐

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

  3. [ZJOI2005]午餐

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

  4. [ZJOI2005]午餐(贪心+dp)

    首先若只有一个窗口,利用贪心,按吃饭时间从大到小排序即可 正确性证明: 定义 eat[i] = 第i个人的吃饭时间,time[i] = 第i个人的打饭时间 延长时间T[i]=max(eat[i]- ∑ ...

  5. [ZJOI2005]午餐 贪心+dp

    这个题如果直接dp的话要考虑 先从题目类型入手,这种规划性问题 应该是个dp 1开始的时间.1结束的时间.2开始的时间.2结束的时间 这是200^6级别的状态数,且没有任何状态优化的余地 所以就要考虑 ...

  6. 2018.12-2019.1 TO-DO LIST

    AC自动机 P3808 [模板]AC自动机(简单版)(完成时间:2018.12.06) P3796 [模板]AC自动机(加强版)(完成时间:2018.12.06) P2444 [POI2000]病毒( ...

  7. 洛谷试炼场 动态规划TG.lv(2)

    P1273 有线电视网 题目描述 某收费有线电视网计划转播一场重要的足球比赛.他们的转播网和用户终端构成一棵树状结构,这棵树的根结点位于足球比赛的现场,树叶为各个用户终端,其他中转站为该树的内部节点. ...

  8. 【做题记录】DP 杂题

    P2577 [ZJOI2004]午餐 $\texttt{solution}$ 想到贪心: 吃饭慢的先打饭节约时间, 所以先将人按吃饭时间从大到小排序. 状态: \(f[i][j]\) 表示前 \(i\ ...

  9. 2018年10月训练记录(10.1~10.23)

    前言 这篇博客记录的是我在201820182018年101010月的刷题列表. 由于时间比较匆忙,可能会有一些空链接,但我会尽快将它们补齐的. (目前链接已补至Oct7thOct\ 7thOct 7t ...

最新文章

  1. CNN 图像增强--DSLR-Quality Photos on Mobile Devices with Deep Convolutional Networks
  2. 简单上手Linux的输入输出重定向
  3. ajax返回头部页面,ajax getResponseHeader获取中文响应头
  4. 500 OOPS:cannot change directory:/root 问题
  5. ConcurrentHashMap实现原理--转载
  6. 大数据的起步:初学者
  7. Struts2 类型转换和数据校验
  8. P4768 [NOI2018] 归程(kruskal 重构树)
  9. android 16 登陆,那些年我们一起养过的电子鸡登陆Android平台
  10. LayaAir学习笔记
  11. shel--常用快捷键
  12. mysql 浏览量统计_统计网站的每日访问量
  13. 开热点给电脑消耗大吗_手机开启WiFi热点,提供流量给电脑上网,可行吗?
  14. 案例:自动复制黏贴bat
  15. HDMI 4K分辨率 时序
  16. 请大家帮忙看下这个shader的问题:
  17. 光电效应与光子|走进量子力学(3)
  18. android 音频裁剪(1)—MP3裁剪
  19. 2.给 Proxmox VE换源
  20. Linux apache服务器(上)

热门文章

  1. [转]31个让你变聪明的方法
  2. Android 的 dex2jar 和 jd-gui 反编译 apk 源代码
  3. Java并发编程(五):Java线程安全性中的对象发布和逸出
  4. 前端面试被问到性能优化该肿么办!
  5. 杭电多校第十场 hdu6434 Count 欧拉函数打表 快速打表模板
  6. 程序员的能力矩阵表【转载自】
  7. JavaScript 中遍历对象的属性
  8. oracle默认初始化用户名密码和密码修改
  9. php Imagick()扩展,实现将原图截取成不同规格尺寸的图片
  10. JAVA中的方法和构造方法有什么区别