洛谷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)
上一篇 2022年4月20日 下午5:00
下一篇 2022年4月20日 下午5:00


相关推荐

  • list,tensor,numpy相互转化

    list,tensor,numpy相互转化1.1list转numpyndarray=np.array(list)1.2numpy转listlist=ndarray.tolist()2.1list转torch.Tensortensor=torch.Tensor(list)2.2torch.Tensor转list先转numpy,后转listlist=tenso…

    2022年10月19日
    9
  • 如何用Visio2013画状态转换图

    如何用Visio2013画状态转换图今天突然需要用 Visio 画状态转换图了 首先声明 用简单图形来画不难 必应可以搜到那种方法 这里不赘述 下面我说说我的办法 首先 状态转换图需要圆角矩形 实心圆 同心圆 箭头 经过一番寻找 在更多图形中找到了下面三个需要的东西 按理说现在所有需要的图形都找到了 该结束了 但是总这样不行呀 总不能每次要画这个图了就打开这三个宝贝吧 我们需要新建自己的模具来解决这个问题 下面 在我们的工程打开我们的模

    2026年3月19日
    2
  • OpenClaw 3.11 更新了哪些内容?一文看懂这次版本升级重点

    OpenClaw 3.11 更新了哪些内容?一文看懂这次版本升级重点

    2026年3月15日
    2
  • 爆肝两万字,我爷爷都看的懂的《栈和队列》,建议各位观众姥爷先收藏

    爆肝两万字,我爷爷都看的懂的《栈和队列》,建议各位观众姥爷先收藏文章目录一、栈????栈的概念及结构????栈的实现二、队列????队列的概念及结构????队列的实现三、栈和队面试题四、概念选择题????1????2一、栈????栈的概念及结构栈:一种特殊的线性表,其只允许在固定的一端插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称库栈底。栈中的数据元素遵守后进先出LIFO(LastInFirstOut)的原则栈有两个经典的操作1️⃣压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。2️⃣出栈:栈的删除操

    2022年6月2日
    40
  • 跨域是什么?[通俗易懂]

    跨域是什么?[通俗易懂]跨域指的是不同服务器之间不能相互访问各自的资源或者数据,这出于一个策略——“同源策略”,那么为什么要这么设计呢,这是因为,一些网站的数据可能涉及的用户的隐私,因此不属于当前服务器的网站时不能访问它的,就比如,我们登陆淘宝后,由不小心点进了其他的一个钓鱼网站,如果说不这么设置,那么钓鱼网站就可以获取到你的登陆账号和密码,进而可以达到使用你的账户购买东西的目的,因此跨域是出于安全的考虑而诞生的。实…

    2022年6月12日
    28
  • Linux下向GitHub 上传代码

    Linux下向GitHub 上传代码Linux 下 GitHub 上传代码 1 先在 Github 个人主页创建一个仓库 2 在根目录下 复制仓库链接 将仓库复制到本地 gitclonehttp gitclone com github com GithubName RepositoryNa git3 进入本地仓库目录 gitinit4 输入以下代码 下载之前学习的脑图 wgethttps labfile oss aliyuncs com courses 1330 linux pngwget RepositoryNa GithubName

    2026年3月17日
    2

发表回复

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

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