• Open cup #2


    A

    D:用前面的H去消去后面的K 然后求最长连续的M

    F:在每一列/行里面求最大的数然后组成最大的和ans[]里的比求出最大的

    L:并查集

    J:DP背锅题 01背包 先求出M种里每种的size和last然后先last最大的放在最后 然后背包DP

    long long solve(Group* groups) {
        long long* x = new long long[n + 1];
        for (int i=0; i<n+1; i++) x[i] = INFINITY;
        x[0] = 0;
    
        // all groups but the last; the last always goes
        // into "last" bus
        for (int i=0; i<m-1; i++)
            for (int j=n-groups[i].size; j>=0; j--) {
                long long time = max(x[j], groups[i].time);
                x[j+groups[i].size] = min(time, x[j+groups[i].size]);
            }
    
        //for (int i=0; i<=n; i++) cout << x[i] << " ";
        //cout << endl;
    
        long long answer = -1;
        for (int i=0; i<=k; i++) 
            if (n - i <= k) if (x[i] < INFINITY) {
                long long total = x[i] * i + (n - i) * groups[m-1].time;
                if (answer == -1 || total < answer)
                    answer = total;
            }
        
        return answer;
    }

    X[i]表示有i人在一个飞机上时的最小last

    然后i从0枚举到k如果剩下的不大于K就统计total 更新答案

  • 相关阅读:
    OCP-1Z0-052-V8.02-116题
    OCP-1Z0-052-V8.02-6题
    OCP-1Z0-052-V8.02-5题
    使用rman恢复控制文件
    Matlab-质点的运动
    Matlab中checkerboard-创建棋盘图像(二)
    OCP-1Z0-052-V8.02-4题
    OCP-1Z0-052-V8.02-3题
    Matlab中checkerboard-创建棋盘图像(一)
    OCP-1Z0-052-V8.02-1题
  • 原文地址:https://www.cnblogs.com/Aragaki/p/7287705.html
Copyright © 2020-2023  润新知