洛谷p2669_洛谷首页

洛谷p2669_洛谷首页洛谷 2577 [ZJOI2005]午餐——序列dp

大家好,又见面了,我是你们的朋友全栈君。

题目:https://www.luogu.org/problemnew/show/P2577

可以从只有一个窗口的角度思考出一个贪心结论。就是应当按吃饭时间(不算打饭时间)从大到小排序。这样交换相邻两个不会使答案更优,因为交换的话对其他人无影响,而吃饭时间长的那个人打到饭的时间也靠后了。

记录第一个窗口打完饭的时间在状态里。已知前 i 个人打饭时间和,能算出来第二个窗口打完饭的时间。所以值就可以记录总共的最晚结束时间了!也因为最晚结束时间对于打完饭的时间不是关系很紧密的,所以需要把第一个窗口的所有可能的打完饭的时间对应的结束时间记录下来。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=205,M=N*N,INF=0x3f3f3f3f;
int n,f[2][M],ans=INF,lm;
struct Node{
    int a,b;
    bool operator< (const Node &v) const
        {
    
    return b>v.b;}
}t[N];
int rdn()
{
    int ret=0,fx=1; char ch=getchar();
    while(ch>'9'||ch<'0'){
   
   if(ch=='-')fx=-1; ch=getchar();}
    while(ch>='0'&&ch<='9') ret=(ret<<3)+(ret<<1)+ch-'0',ch=getchar();
    return ret*fx;
}
int main()
{
    n=rdn();
    for(int i=1;i<=n;i++) t[i].a=rdn(),t[i].b=rdn();
    sort(t+1,t+n+1);
    memset(f,0x3f,sizeof f); f[0][0]=0;
    for(int i=1,u=1,v=0;i<=n;i++,u=!u,v=!v)
    {
        lm+=t[i].a;
        for(int j=0,k1,k2;j<=lm;j++)
        {
            if(f[v][j])f[u][j]=max(f[v][j],lm-j+t[i].b);
            if(j>=t[i].a)
                f[u][j]=min(f[u][j],max(f[v][j-t[i].a],j+t[i].b));
        }
    }
    int d=(n&1);
    for(int j=0;j<=lm;j++) ans=min(ans,f[d][j]);
    printf("%d\n",ans);
    return 0;
}

 

转载于:https://www.cnblogs.com/Narh/p/9670070.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107300.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • html超链接位置怎么改,如何修改HTML超链接样式?

    html超链接位置怎么改,如何修改HTML超链接样式?在网页开发中,我们不免会用到超链接,将内容链接到原网页上。如果不对超链接进行设置,链接默认以固定样式显示,过于单一。那么我们要如何修改HTML中的超链接呢?这篇文章W3Cschool小编为大家介绍一下。我们都知道,超链接是用标签来显示的。如果我们需要修改样式,则需要通过CSS修改它的样式。标签的样式还分为四个类型,分别为未访问、已访问、鼠标滑过、点击。a:link:未被访问的链接a:v…

    2022年7月19日
    25
  • C语言基础[通俗易懂]

    C语言基础[通俗易懂]C语言基础

    2022年4月23日
    40
  • php递归函数详解_用php递归函数实现阶乘计算

    php递归函数详解_用php递归函数实现阶乘计算本节内容:PHP递归算法。PHP递归算法代码:复制代码代码示例://定义PI一分的角度的值define(“PII”,M_PI/180);//新建图像资源,并定义其背景为白色,前景色为黑色$im=imagecreate(670,500);$white=imagecolorallocate($im,0xFF,0xFF,0xFF);$g=imagecolorallocate($im,0x00,0x0…

    2022年8月11日
    3
  • 微机原理考试试题及答案分析_微机原理及接口技术

    微机原理考试试题及答案分析_微机原理及接口技术微机原理与接口技术期末考试试题及答案微机原理与接口技术期末考试题库微机系统的硬件由哪几部分组成?答:三部分:微型计算机(微处理器,存储器,I/0接口,系统总线),外围设备,电源。什么是微机的总线,分为哪三组?答:是传递信息的一组公用导线。分三组:地址总线,数据总线,控制总线。8086/8088CPU的内部结构分为哪两大模块,各自的主要功能是什么?答:总线接口部件(BIU)功能:根据执行单元EU的…

    2022年9月1日
    2
  • AdminLTE 框架应用(一 )- 插件介绍

    AdminLTE 框架应用(一 )- 插件介绍

    2021年11月5日
    130
  • KETTLE教程:转换

    KETTLE教程:转换所谓的转换,可以理解为将数据开中的数据转换为excel表格,txt文档,.bat等格式输出;将excel表格,txt文档,.bat等格式转换成数据库中表格的数据。kettle的转换功能十分便捷,大大减少了我们的工作量。下面开始介绍如何使用kettle进行转换:以文本转换为mysql数据表为例首先,点击文件:在文件中新建→转换然后,点击转换下的DB转换:选择要转换成什么数据…

    2022年5月24日
    43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号