首先,应该尽量让吃饭慢的排在前面,先按这个排个序

然后再来决定每个人到底去哪边

设f[i][j]是做到了第i个人,然后1号窗口目前的总排队时间是j,目前的最大总时间

有这个i和j的话,再预处理出前i个人的排队总时间sum[i],可以知道在2号窗口的排队时间是sum[i]-j

拿着两个去更新答案就行了

 1 #include<bits/stdc++.h>
 2 #define pa pair<int,int>
 3 #define CLR(a,x) memset(a,x,sizeof(a))
 4 using namespace std;
 5 typedef long long ll;
 6 const int maxn=210;
 7
 8 inline ll rd(){
 9     ll x=0;char c=getchar();int neg=1;
10     while(c<'0'||c>'9'){if(c=='-') neg=-1;c=getchar();}
11     while(c>='0'&&c<='9') x=x*10+c-'0',c=getchar();
12     return x*neg;
13 }
14
15 int f[maxn][maxn*maxn],st[maxn];
16 int N;
17 struct Node{
18     int e,q;
19 }p[maxn];
20
21 inline bool cmp(Node a,Node b){return a.e>b.e;}
22
23 int main(){
24     //freopen("","r",stdin);
25     int i,j,k;
26     N=rd();
27     for(i=1;i<=N;i++){
28         p[i].q=rd(),p[i].e=rd();
29     }sort(p+1,p+N+1,cmp);
30     for(i=1;i<=N;i++)
31         st[i]=st[i-1]+p[i].q;
32
33     CLR(f,127);f[0][0]=0;
34     for(i=1;i<=N;i++){
35         for(j=0;j<=N*200;j++){
36             if(f[i-1][j]>=1e8) continue;
37             f[i][j+p[i].q]=min(f[i][j+p[i].q],max(f[i-1][j],j+p[i].q+p[i].e));
38             f[i][j]=min(f[i][j],max(f[i-1][j],st[i]-j+p[i].e));
39         }
40     }
41     int ans=1e9;
42     for(j=0;j<=N*200;j++)
43         ans=min(ans,f[N][j]);
44     printf("%d\n",ans);
45     return 0;
46 }

转载于:https://www.cnblogs.com/Ressed/p/9833565.html

luogu2577/bzoj1899 午餐 (贪心+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. [ZJOI2005]午餐 贪心+dp

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

  4. URAL 1203 Scientific Conference(贪心 || DP)

    Scientific Conference 之前一直在刷计算几何,邀请赛连计算几何的毛都买见着,暑假这一段时间就做多校,补多校的题目,刷一下一直薄弱的DP.多校如果有计算几何一定要干掉-.- 题意:给 ...

  5. Codeforces Round #699 (Div. 2) E.Sorting Books(贪心+DP / 线段树)超高质量题解,看不懂来打我 ~

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 E - Sorting Books 一排书架上有 nnn 本书排成一排,每本书上有一个颜色 aia_i ...

  6. 【bzoj3174】[Tjoi2013]拯救小矮人 贪心+dp

    题目描述 一群小矮人掉进了一个很深的陷阱里,由于太矮爬不上来,于是他们决定搭一个人梯.即:一个小矮人站在另一小矮人的 肩膀上,知道最顶端的小矮人伸直胳膊可以碰到陷阱口.对于每一个小矮人,我们知道他从脚 ...

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

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

  8. HDU 4001 To Miss Our Children Time(2011年大连网络赛 A 贪心+dp)

    开始还觉得是贪心呢...  给你三类积木叫你叠楼房,给你的每个积木包括四个值:长 宽(可以互换) 高 类型d  d=0:你只能把它放在地上或者放在 长 宽 小于等于 自己的积木上面  d=1:你只能把 ...

  9. 【BZOJ4069】【APIO2015】巴厘岛的雕塑 [贪心][DP]

    巴厘岛的雕塑 Time Limit: 10 Sec  Memory Limit: 64 MB [Submit][Status][Discuss] Description 印尼巴厘岛的公路上有许多的雕塑 ...

最新文章

  1. 如何调用形参数组_函数的参数
  2. linux java top_Linux top和负载的解释(转载)
  3. 前端学习(2730):重读vue电商网站40之使用vue-table-with-tree-grid
  4. C#关键字的个人理解与注释
  5. Linux Shell脚本_历史命令显示操作时间
  6. (计算机组成原理)第四章指令系统-第二节1:指令寻址
  7. 【2017-12-12】Winform----Datagirdview使用
  8. 【2017百度之星程序设计大赛 - 资格赛】 度度熊与邪恶大魔王
  9. 游戏筑基开发之函数指针及main函数利用指针传参(C语言)
  10. 克拉克变换(Clarke Transformation)
  11. element表格序号排序
  12. 改善民生 住有所居(加快经济发展方式转变)
  13. android hud软件,手机HUD靠谱软件选哪些?_手机_手机生活应用-中关村在线
  14. 计算机毕业设计Node.js+Vue交通违章举报平台(程序+源码+LW+部署)
  15. 1分钟查找是退回件的快递单号
  16. 子网掩码取反怎么取_关于子网掩码的问题
  17. python+nodejs+php+springboot+vue 社区小区报修 -社区信息管理
  18. 2019 DENSE-HAZE: A BENCHMARK FOR IMAGE DEHAZING WITH DENSE-HAZE AND HAZE-FREE IMAGES
  19. uni-app 上拉加载函数 onReachBottom 不触发
  20. 1553B总线可靠性量化指标的理解

热门文章

  1. 【PAT - 甲级1010】Radix (25分)(二分,进制转化)
  2. 【洛谷 - P1772 】[ZJOI2006]物流运输(dp)
  3. 【HDU - 1026 】Ignatius and the Princess I (bfs + 记录路径)
  4. 使用OpenCV库快速求解相机内参
  5. npm安装与卸载和cordova及ionic项目打包调试等相关命令总结归纳
  6. python bind sock_python 在bind端口之后创建的socket如果不关闭的话会被回收吗?
  7. win10一按右键就闪屏_升级Win10正式版后屏幕一直闪烁正确的解决办法
  8. 建房子 最安全图纸_妄想山海初期该怎么办?砍树狩猎建房子,还能拆别人的房子...
  9. html 表格文字颜色 css,CSS 表格-JavaScript中文网-JavaScript教程资源分享门户
  10. Java迭代器修改链表_Java恼人的迭代器不会返回链表中的元素