zoukankan      html  css  js  c++  java
  • PAT-Top1002. Business (35)

      在一个项目的截止日期之前,如果工期有空闲则可能可以开展其他项目,提高效益。本题考查动态规划。数组dp[i][t]表示在截止时间为t时,前i个项目工作安排能够产生的最大收益,而前i个项目的截止时间都不大于t。

     1 //#include "stdafx.h"
     2 #include <iostream>
     3 #include <algorithm>
     4 #include <memory.h>
     5 
     6 using namespace std;
     7 
     8 struct node { // project struct
     9     int p, l, d; // p is the profit, l is the lasting days of the project, d is the deadline
    10 }pro[51];
    11 
    12 int cmp(node a, node b) { // sort rule
    13     return a.d < b.d;
    14 }
    15 
    16 int main() {
    17     int n;
    18     scanf("%d", &n);
    19 
    20     int i, maxd = 0;
    21     for (i = 1; i <= n; i++) {
    22         scanf("%d%d%d", &pro[i].p, &pro[i].l, &pro[i].d);
    23 
    24         if (pro[i].d > maxd) { // get the max deadline
    25             maxd = pro[i].d;
    26         }
    27     }
    28 
    29     sort(pro + 1, pro + n + 1, cmp);
    30 
    31     int** dp = new int*[n + 1];
    32     for (i = 0; i <= n; i++) {
    33         dp[i] = new int[maxd + 1];
    34         memset(dp[i], 0, sizeof(dp[i])); // initialization : set value zero
    35     }
    36 
    37     //printf("%d
    ", dp[0][0]);
    38     int j, t;
    39     for (i = 1; i <= n; i++) {
    40         for (j = 1; j <= maxd; j++) {
    41             t = min(j, pro[i].d) - pro[i].l; 
    42             // get the max profit
    43             if (t >= 0) { // if can plus current project to compare the profit
    44                 dp[i][j] = max(pro[i].p + dp[i - 1][t], dp[i - 1][j]);
    45             } else { // otherwise
    46                 dp[i][j] = dp[i - 1][j];
    47             }
    48         }
    49     }
    50 
    51     printf("%d
    ", dp[n][maxd]);
    52 
    53     for (i = 0; i <= n; i++) {
    54         delete[] dp[i];
    55     }
    56     delete[] dp;
    57 
    58     system("pause");
    59     return 0;
    60 }
    View Code

    参考资料

    PAT. 1002. Business (35)

  • 相关阅读:
    .NET的SqlHelper应用代码
    .NET获取客户端的操作系统、IP地址、浏览器版本
    Codevs 3981 动态最大子段和
    洛谷 P3373 【模板】线段树 2
    一些笔记【杂】
    洛谷 P1432 倒水问题
    洛谷 P2324 [SCOI2005]骑士精神
    Codevs 1010 过河卒
    POJ 3278 Catch That Cow
    洛谷P2184 贪婪大陆
  • 原文地址:https://www.cnblogs.com/WJQ2017/p/7569199.html
Copyright © 2011-2022 走看看