zoukankan      html  css  js  c++  java
  • codevs 1345 饥饿的奶牛

    1345 饥饿的奶牛

     时间限制: 1 s
     空间限制: 128000 KB
     题目等级 : 黄金 Gold
    题目描述 Description

    John养了若干奶牛,每天晚上奶牛都要进食。由于条件比较简陋,并不一定所有奶牛都能吃到食物。奶牛的进食方式是这样的:John有n个食桶(1<=n<=2000),分别编号为1..n。这些食桶被按照编号排成一行。John将奶牛们分成若干组,每组奶牛总是呆在一起进食的,每组奶牛会提出要求——他们需要吃第start到第end桶中的食物。可能存在若干组奶牛都要吃同一个桶中的食物,从而就产生了冲突,这时John只能满足其中一组的要求,另一些组就只能饿肚子了。

        John当然不想让奶牛都饿肚子,所以他希望根据奶牛们提出的请求,满足其中一些组的要求,使得最多的食桶被奶牛食用。这个难题困扰着John,他希望得到你的帮助。

    输入描述 Input Description

     从文本文件hunger.in中读入数据。

        第一行一个整数n,表示奶牛的组数。(1<=n<=1000)

        第2~n+1行,每行两个整数start和end,描述了一组奶牛提出的请求。

    输出描述 Output Description

     一个整数,表示最多有多少个食桶可以被食用。

    (满足第1组和第2组奶牛的要求,这样1~3号和7~8号这5个食桶可以被食用)

    样例输入 Sample Input

    3

    1 3

    7 8

    3 4

    样例输出 Sample Output

    5

    /*类似于线段覆盖的题目,不同的是端点不可以重合,但是仍然是要求线段最长*/
    #include<cstdio>
    #include<iostream>
    using namespace std;
    struct Group{
        int start,end,len;
    };
    #include<algorithm>
    Group group[1001];
    int n;
    int cmp(Group a,Group b)
    {
        return a.end<b.end;
    }
    void input()
    {
        scanf("%d",&n);
        for(int i=1;i<=n;++i)
        {
            scanf("%d%d",&group[i].start,&group[i].end);
            if(group[i].start>group[i].end)
            swap(group[i].start,group[i].end);
            group[i].len=group[i].end-group[i].start+1;
        }
        sort(group+1,group+n+1,cmp);
    }
    int dp[1001];
    void DP()
    {
        dp[1]=group[1].len;
        for(int i=2;i<=n;++i)
          for(int j=1;j<=i-1;++j)
          if(group[i].start>group[j].end)
          dp[i]=max(dp[i],dp[j]+group[i].len);
    }
    int main()
    {
        input();
        DP();
        cout<<dp[n]<<endl;
        return 0;
    }
    View Code
  • 相关阅读:
    网络安全分析
    java实现 洛谷 P1464 Function
    java实现 洛谷 P1464 Function
    java实现 洛谷 P1014 Cantor表
    java实现 洛谷 P1014 Cantor表
    java实现 洛谷 P1014 Cantor表
    java实现 洛谷 P1014 Cantor表
    java实现 洛谷 P1014 Cantor表
    java实现 洛谷 P1540 机器
    java实现 洛谷 P1540 机器
  • 原文地址:https://www.cnblogs.com/c1299401227/p/5305372.html
Copyright © 2011-2022 走看看