• 狩猎大赛(社团周赛)


    链接:http://139.9.84.16/problem/1006

    Description

    肥宅和他的老婆们最近沉迷《人被怪物猎:世界》,现在他们正在准备举行狩猎大赛!

    狩猎大赛只允许使用太刀和弓箭两种武器,两种武器分别放在两个仓库。狩猎需要先排队在仓库里挑选一把满意的太刀或者满意的弓,然后开始狩猎。

    有很多台电脑,因此老婆们挑好武器之后都能够开始狩猎,但每个仓库里最多同时只能有一个人进入。

    肥宅想将老婆们分成两队并安排好排队顺序。两个队伍是并行的互不影响。

    对于肥宅的第iii老婆,不管使用什么武器,挑武器都是需要XiX_iXi时间,狩猎都是需要YiY_iYi时间。

    从时刻000开始计算,请问老婆们最快在什么时刻完成狩猎?

    Input

    第一行一个正整数nnn表示有nnn个老婆

    接下来nnn行,每行两个整数分别表示XiX_iXiYiY_iYi

    1&lt;n≤3001 &lt; n leq 3001<n300

    2≤Xi,Yi≤2332 leq X_i,Y_i leq 2332Xi,Yi233

    Output

    输出一行一个整数表示最快在何时完成所有狩猎

    Sample Input 1

    5
    2 2
    7 7
    1 3
    6 4
    8 5
    

    Sample Output 1

    17

     

    题解:很显然y大的放在队头,注意xi,yi的数值都很小,总时间就很小,因为是2个队列,只要对其中的一个队进行dp就能知道总的最优解,f[i][j]表示前i个,在第j秒时的最优解,

      状态转移方程:f[i][j]=min( max(f[i-1][j-xi], j+yi)); f[i][j]=min( max(f[i-1][j], sum[i]-j+yi));

    #include <bits/stdc++.h>
    using namespace std;
    
    const int maxn=305;
    struct Node{
        int x, y;
        bool operator <(const Node &a) const{
            return y>a.y;
        }
    }a[maxn];
    
    int f[maxn][maxn*maxn], sum[maxn];
    int n;
    
    int main()
    {
        scanf("%d", &n);
        for(int i=1; i<=n; i++)
            scanf("%d%d", &a[i].x, &a[i].y);
        sort(a+1, a+1+n);
        for(int i=1; i<=n; i++)
            sum[i]=sum[i-1]+a[i].x;
        memset(f, 0x3f, sizeof(f));
        f[0][0]=0;
        for(int i=1; i<=n; i++)
        {
            for(int j=a[i].x; j<=sum[n]; j++)
                f[i][j]=min(f[i][j], max(f[i-1][j-a[i].x], j+a[i].y));
            for(int j=0; j<=sum[n]; j++)
                f[i][j]=min(f[i][j], max(f[i-1][j], sum[i]-j+a[i].y));
        }
        int ans=1<<30;
        for(int j=0; j<=sum[n]; j++)
            ans=min(ans, f[n][j]);
        printf("%d
    ", ans);
        return 0;
    }
    View Code
  • 相关阅读:
    linux如何编译安装新内核支持NTFS文件系统?(以redhat7.2x64为例)
    RAID磁盘阵列的搭建(以raid0、raid1、raid5、raid10为例)
    linux专题一之文件归档和压缩(tar、file、zip)
    linux专题一之文件管理(目录结构、创建、查看、删除、移动)
    CENTOS6.6上搭建单实例ORACLE12C
    oracle12c各个版本对其需要的依赖包及系统参数的修改
    mysql cp复制和mysqldump备份测试
    mysql之mysql_config_editor
    CENTOS6.6下redis3.2集群搭建
    CENTOS6.6 下mysql MHA架构搭建
  • 原文地址:https://www.cnblogs.com/Yokel062/p/11634805.html
Copyright © 2020-2023  润新知