• [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 }
  • 相关阅读:
    设计模式-总览
    restful
    springmvc异常统一处理(二)
    springmvc参数校验(二)
    跨语言的RPC
    更安全的RPC接口
    RPC版 “Hello World”
    用例(Use Case)
    参与者
    数据库知识基础入门
  • 原文地址:https://www.cnblogs.com/HocRiser/p/9887785.html
Copyright © 2020-2023  润新知