zoukankan      html  css  js  c++  java
  • 洛谷 1156 垃圾陷阱

    作为一道蓝色的DP神题,它成功把我卡了两个小时。

    这个题对我来说确实有些困难,本人太菜了,对DP毫无感觉。

    后来发现这是个背包,要么吃要么放,前提是饿不死。

    于是:

    AC代码:

    #include <iostream>
    #include <cstring>
    #include <algorithm>
    #include <cstdio>
    using namespace std;
    inline int read()
    {
        int x = 0;
        int k = 1;
        char c = getchar();
        while (!isdigit(c))
            if (c == '-') k = -1, c = getchar();
            else c = getchar();
        while (isdigit(c))
            x = (x << 1) + (x << 3) + (c ^ 48),
            c = getchar();
        return k * x;
    }
    int m, n, dp[105][3000];
    struct node
    {
        int t, f, h;
        bool operator < (const node & a) const
            { return t < a.t; }
    }rbs[102];
    int main()
    {
        m = read();
        n = read();
        memset(dp, -1, sizeof(dp));
        for (int i = 1; i <= n; ++i) 
            rbs[i].t = read(), rbs[i].f = read(), rbs[i].h = read();
        sort(rbs + 1, rbs + n + 1);
        dp[0][0] = 10;
        for (int i = 0; i <= n; ++i)
            for (int j = 0; j <= m; ++j)
            {
                if (dp[i][j] < 0) continue;
                if (dp[i][j] >= rbs[i + 1].t - rbs[i].t && j + rbs[i + 1].h >= m)
                {
                    printf("%d", rbs[i + 1].t);
                    return 0;
                }
                if (dp[i][j] >= rbs[i + 1].t - rbs[i].t)
                    dp[i + 1][j + rbs[i + 1].h] = dp[i][j] - rbs[i + 1].t + rbs[i].t,
                    dp[i + 1][j] = max(dp[i + 1][j], dp[i][j] + rbs[i + 1].f - rbs[i + 1].t + rbs[i].t);
            }
        int sum = 0, mogic = 10;
        for (int i = 1; i <= n; ++i)
            if (mogic >= rbs[i].t - rbs[i - 1].t)
                mogic -= rbs[i].t - rbs[i - 1].t, mogic += rbs[i].f, sum += rbs[i].t - rbs[i - 1].t;
            else 
            {
                printf("%d", sum + mogic);
                return 0;
            }
        printf("%d", sum + mogic);
        return 0;
    }
  • 相关阅读:
    装饰器 无惨固定模式 和 有参装饰器的固定模式
    匿名函数
    字典生成式
    列表生成式
    Centos7安装配置apache-tomcat-8.5.16.tar.gz
    Centos7安装配置jdk-8u151-linux-x64.tar.gz
    Linux CentOS7源码安装配置mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz
    VirtualBox新建Centos7虚拟系统
    vmware workstation 10的安装
    redhat linux rpm包安装配置mysql数据库
  • 原文地址:https://www.cnblogs.com/yanyiming10243247/p/9784106.html
Copyright © 2011-2022 走看看