zoukankan      html  css  js  c++  java
  • 饥饿的奶牛(不重区间最大值)

    牛在饲料槽前排好了队。饲料槽依次用1到N(1N2000)编号。每天晚上,一头幸运的牛根据约翰的规则,吃其中一些槽里的饲料。

    约翰提供BB个区间的清单。一个区间是一对整数startend1≤start≤end≤N,表示一些连续的饲料槽,比如1-3,7-8,3-4等等。牛可以任意选择区间,但是牛选择的区间不能有重叠。

    当然,牛希望自己能够吃得越多越好。给出一些区间,帮助这只牛找一些区间,使它能吃到最多的东西。

    在上面的例子中,1-3和3-4是重叠的;聪明的牛选择{1-3,7-8},这样可以吃到5个槽里的东西。

    Input

    第一行,整数BB(1B1000
    第二行到B+1行,每行两个整数,表示一个区间,较小的端点在前面。 

    Output

    一个整数,表示最多能吃到多少个槽里的食物。

    Samples

    Input Copy
    3
    1 3
    7 8
    3 4
    Output
    5

    01背包
    #include <iostream>
    #include<algorithm>
    using namespace std; 
    const int maxn=1e6+100;
    struct node{
        int l,r;
    }a[maxn];
    int dp[maxn];
    int p;    
    int n;
    bool cmp(node x,node y){
        return x.r<y.r;
    }
    void inint(){
        cin>>n;
        for(int i=1;i<=n;i++){
            scanf("%d%d",&a[i].l,&a[i].r);    
        }
    }
    int main(){
        inint();
        sort(a+1,a+n+1,cmp);
        p=a[n].r;
        for(int i=1;i<=n;i++){
            for(int j=p;j>=a[i].r;j--){
                dp[j]=max(dp[j],dp[a[i].l-1]+(a[i].r-a[i].l+1));
            }
        } 
        cout<<dp[p]<<endl;
    }
  • 相关阅读:
    串口操作
    图片转化成二进制数据、等比缩放
    DSO Framer Control Object 操作word文件
    C#图片存入数据库及其读出显示
    对话框的用法
    C#读取数据库中的表
    将Resource中的图片资源动态绑定到PictureBox中:
    ProgressBar
    C# 操作数据库表和数据库
    操作系统–进程管理
  • 原文地址:https://www.cnblogs.com/lipu123/p/14347505.html
Copyright © 2011-2022 走看看