zoukankan      html  css  js  c++  java
  • POJ-3616 Milking Time

    题目链接:

    https://vjudge.net/problem/POJ-3616

    题目大意:

    在一个农场里,在长度为N个时间可以挤奶,但只能挤M次,且每挤一次就要休息t分钟;

    接下来给m组数据表示挤奶的时间与奶量求最大挤奶量

    思路:

    dp[i]表示完成第i个任务的挤奶量,之后的所有区间左端点大于等于休息之后的时间的任务,都需要更新

     1 #include<iostream>
     2 #include<vector>
     3 #include<queue>
     4 #include<algorithm>
     5 #include<cstring>
     6 #include<cstdio>
     7 #include<set>
     8 #include<map>
     9 #include<cmath>
    10 #include<sstream>
    11 using namespace std;
    12 typedef pair<int, int> Pair;
    13 typedef long long ll;
    14 const int INF = 0x3f3f3f3f;
    15 int T, n, m,d;
    16 const int maxn = 1e3 + 10;
    17 struct node
    18 {
    19     int x, y, num;
    20     bool operator < (const node & a)const
    21     {
    22         return x < a.x || x == a.x && y < a.y;
    23     }
    24 }a[maxn];
    25 int dp[maxn];//dp[i]表示前i次挤奶中的最大量
    26 int main()
    27 {
    28     cin >> n >> m >> d;
    29     for(int i = 0; i < m; i++)
    30     {
    31         scanf("%d%d%d", &a[i].x, &a[i].y, &a[i].num);
    32     }
    33     sort(a, a + m);
    34     for(int i = 0; i < m; i++)
    35     {
    36         dp[i] += a[i].num;
    37         int start = a[i].y + d;
    38         for(int j = i + 1; j < m; j++)
    39         {
    40             if(a[j].x >= start)
    41                 dp[j] = max(dp[j], dp[i]);
    42         }
    43     }
    44     int ans = 0;
    45     for(int i = 0; i < m; i++)ans = max(ans, dp[i]);
    46     cout<<ans<<endl;
    47     return 0;
    48 }
  • 相关阅读:
    23. Sum Root to Leaf Numbers
    22. Surrounded Regions
    21. Clone Graph
    19. Palindrome Partitioning && Palindrome Partitioning II (回文分割)
    18. Word Ladder && Word Ladder II
    14. Reverse Linked List II
    20. Candy && Gas Station
    16. Copy List with Random Pointer
    ubuntu 下建立桌面快捷方式
    java基础篇-jar打包
  • 原文地址:https://www.cnblogs.com/fzl194/p/8824703.html
Copyright © 2011-2022 走看看