洛谷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


相关推荐

  • 法拉第电磁感应实验

    法拉第电磁感应实验看图 nbsp nbsp nbsp nbsp 导线在磁场中切割磁感线作左右运行 会产生电流 nbsp nbsp nbsp nbsp nbsp 其实 在上小学的时候 在自然课中 李老师就曾经说过 切割磁力线 产生电 当时完全不知道是什么意思 甚至都不知道这五个字是怎样写的 最近回忆起来 才确认是这五个字 李老师说的磁力线 其实就是磁感线

    2026年3月26日
    2
  • GridView中DropDownList的事件

    GridView中DropDownList的事件 GridView中DropDownList的事件   1.获取事件所在GridView的行索引:   可以通过一下代码获得:  protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)    {        DropDownList drp = sender as DropDow

    2025年10月31日
    5
  • 分享下 PHP 使用 getID3 来获取音频、视频等媒体文件相关信息

    分享下 PHP 使用 getID3 来获取音频、视频等媒体文件相关信息

    2022年2月14日
    181
  • 完整教程:一文讲清:AI、AGI、AIGC、NLP、LLM、ChatGPT的区别与联系

    完整教程:一文讲清:AI、AGI、AIGC、NLP、LLM、ChatGPT的区别与联系

    2026年3月15日
    4
  • JAVA里面的堆栈区别

    JAVA里面的堆栈区别一 内存分配的策略 nbsp nbsp nbsp nbsp nbsp 按照编译原理的观点 程序运行时的内存分配有三种策略 分别是静态的 栈式的 和堆式的 nbsp nbsp nbsp nbsp 静态存储分配是指在编译时就能确定每个数据目标在运行时刻的存储空间需求 因而在编译时就可以给他们分配固定的内存空间 这种分配策略要求程序代码中不允许有可变数据结构 比如可变数组 的存在 也不允许有嵌套或者递归的结构出现 因为它们都会导致编译程序无法计算准确的

    2026年3月18日
    2
  • Carson带你学Android:最全面的Webview使用详解

    Carson带你学Android:最全面的Webview使用详解前言现在很多App里都内置了Web网页(HypridApp),比如说很多电商平台,淘宝、京东、聚划算等等,如下图那么这种该如何实现呢?其实这是Android里一个叫WebView的组件实现的。今天我将全面介绍WebView的常用用法。目录1.简介WebView是一个基于webkit引擎、展现web页面的控件。Android的Webview在低版本和高版本采用了不同的webkit版本内

    2022年6月2日
    43

发表回复

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

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