zoukankan      html  css  js  c++  java
  • [BZOJ4247]挂饰(DP)

    当最终挂饰集合确定了,一定是先挂挂钩多的在挂挂钩少的。

    于是按挂钩从大到小排序,然后就是简单的01背包。

     1 #include<cstdio>
     2 #include<algorithm>
     3 #define rep(i,l,r) for (int i=(l); i<=(r); i++)
     4 using namespace std;
     5 
     6 const int N=2010,inf=1e9;
     7 int f[N][N];
     8 int n,ans=-inf,v,c;
     9 struct P{ int v,c; }s[N];
    10 bool operator <(const P &a,const P &b){ return a.v>b.v; }
    11 
    12 int main(){
    13     freopen("bzoj4247.in","r",stdin);
    14     freopen("bzoj4247.out","w",stdout);
    15     scanf("%d",&n);
    16     rep(i,1,n) scanf("%d%d",&s[i].v,&s[i].c);
    17     rep(i,0,n) f[0][i]=f[i][n+1]=-inf;
    18     f[0][1]=0; sort(s+1,s+n+1);
    19     rep(i,1,n) rep(j,0,n) f[i][j]=max(f[i-1][max(j-s[i].v,0)+1]+s[i].c,f[i-1][j]);
    20     rep(i,0,n) ans=max(ans,f[n][i]);
    21     printf("%d
    ",ans);
    22     return 0;
    23 }
  • 相关阅读:
    在Eclipse中设置中文JavaDOC
    买车,给点建议和意见
    父亲节
    JSP文件上传

    昨天我生日
    换皮了
    西安夕阳
    WinForms中只能输入数字的文本框
    使用GoogleCode SVN服务
  • 原文地址:https://www.cnblogs.com/HocRiser/p/9887785.html
Copyright © 2011-2022 走看看