zoukankan      html  css  js  c++  java
  • [USACO13DEC]牛奶调度Milk Scheduling

    原题链接https://www.lydsy.com/JudgeOnline/problem.php?id=4096

    容易想到的一个测略就是,优先考虑结束时间小的牛。所以我们对所有牛按照结束时间排序。然后我们发现前(i)头奶牛在时刻j的最大价值由前(i-1)头奶牛在时刻(j-1)的最大价值转移过来,那么考虑dp。

    (dp[i][j])表示前i头奶牛在时刻j的最大价值,那么我们有:

    [dp[i][j]=max(dp[i][j],dp[i-1][j-1]+g[i]); ]

    然后考虑到空间问题,我们可以用滚动数组优化空间。或者直接改成一维数组,把循环倒过来即可。是不是很像背包

    时间复杂度为(O(N*{sum}_{i=1}^{n}d[i]))

    #include<algorithm>
    #include<iostream>
    #include<cstring>
    #include<cstdio>
    #define maxn 10010
    using namespace std;
     
    inline int read(){
        register int x(0),f(1); register char c(getchar());
        while(c<'0'||'9'<c){ if(c=='-') f=-1; c=getchar(); }
        while('0'<=c&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar();
        return x*f;
    }
     
    pair<int,int> a[maxn];
    int n,ans,dp[maxn];
     
    int main(){
        n=read();
        for(register int i=1;i<=n;i++) a[i].second=read(),a[i].first=read();
        sort(a+1,a+1+n);
        for(register int i=1;i<=n;i++){
            for(register int j=a[i].first;j>=1;j--){
                dp[j]=max(dp[j],dp[j-1]+a[i].second);
                ans=max(ans,dp[j]);
            }
        }
        printf("%d
    ",ans);
        return 0;
    }
    
  • 相关阅读:
    MVC MVP MVVM
    RC4 对称加密
    ARM 寻址方式
    杂项记录 arm64 的一些特性
    无向图-笔记-代码
    iOS 自定义导航栏
    ios中设置UIButton圆角,添加边框
    iOS 中UICollectionView实现各种视觉效果
    UIScrollView中UITableView
    iOS 13 适配总结
  • 原文地址:https://www.cnblogs.com/akura/p/11309436.html
Copyright © 2011-2022 走看看