洛谷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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Linux生成静态库_linux生成静态库

    Linux生成静态库_linux生成静态库转自:https://blog.csdn.net/ddreaming/article/details/53096411一、动态库、静态库简介库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。库有两种:静态库.a(win系统下是lib)和动态…

    2022年9月30日
    7
  • 波束形成

    波束形成1.问题描述:数字波束形成器是全数字化超声成像的基础,也是高性能彩超的保证。数字波束形成包括发射和接收两个部分。数字是接收波束形成的关键技术,它通过使用顺序储存器FIFO或随机存取存储器双端口RAM替代模拟式波束形成器中的LC延时线来实现波束聚焦,即以数字延时补偿替代模拟延时的补偿。数字延时不仅能实现精确延时补偿,实现所谓的逐点跟踪式动态聚焦,还能方便实现动态孔径、动态变迹控制,克服模拟式延时补偿存在的诸多固有缺点,通道数增加不受限制,是图像品质得以全面提高。2.部分程序:close..

    2022年6月15日
    40
  • mysql读写分离配置

    mysql读写分离配置mysql读写分离配置随着网站访问和请求量的增加,单台数据库服务器的连接已耗尽,会出现连接请求还在等待,或是数据库服务器崩溃等现象,这时候我们考虑如何减少数据库的连接,可以通过优化代码、使用缓存、数据库读写分离等方式解决此问题。 什么是读写分离:将数据库的读、写操作分别作用到不同的数据库(不同物理机)上。 适用场景:读操作远大于写操作,包含大量复杂统计、离线计算等任务(比如定时按各维度对数…

    2022年6月9日
    39
  • mysql 建前缀索引_MySQL_前缀索引_建立[通俗易懂]

    mysql 建前缀索引_MySQL_前缀索引_建立[通俗易懂]–查看出现频率selectcount(*)ascnt,cityfromsakila.city_demogroupbycityorderbycntdesclimit10;1.selectcount(distinctcity)/count(*)fromsakila.city_demo;*完整列的选择性2.selectcount(distinctleft(ci…

    2022年5月10日
    39
  • 一款好用的Linux系统服务器性能监控分析工具介绍「建议收藏」

    一款好用的Linux系统服务器性能监控分析工具介绍「建议收藏」软件性能测试过程中经常要对服务器性能指标(比如CPU、内存、磁盘IO及网络IO等等)进行监控以分析出软件在此服务器上的性能瓶颈以便进行后续的服务器调优及软件性能优化。下面为大家介绍一款小编认为比较好用的Linux系统服务器性能监控分析工具:nmonforLinux。从nmon工具包中选择监控服务器匹配的nmon监控可执行文件(如下图所示:小编使用的是nmon_linux_x86_64)将…

    2022年5月30日
    34
  • 数据库锁表如何解决_mysql数据库怎么解锁

    数据库锁表如何解决_mysql数据库怎么解锁这个问题之前遇到过一次,但是由于不知道导致锁表的原因,也没细想,就知道表被锁了,然后让别人把表给解锁了。但是前天的一次操作,让我亲眼见证了导致锁表的过程,以及如何给lock的表解锁。1.导致锁表的原因(同志们也可以参考是不是也是同样的操作啊。。。):1.1首先是大前提我们正常的框架在service层都会有事物控制,比如我一个service层的方法要执行更新两张表,这两个表只有同…

    2022年8月23日
    7

发表回复

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

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