• [BZOJ] 4247 挂饰


    Time Limit: 10 Sec  Memory Limit: 256 MB
    Submit: 1390  Solved: 566
    [Submit][Status][Discuss]
    Description
    JOI君有N个装在手机上的挂饰,编号为1...N。 JOI君可以将其中的一些装在手机上。
    JOI君的挂饰有一些与众不同——其中的一些挂饰附有可以挂其他挂件的挂钩。每个挂件要么直接挂在手机上,要么挂在其他挂件的挂钩上。直接挂在手机上的挂件最多有1个。
    此外,每个挂件有一个安装时会获得的喜悦值,用一个整数来表示。如果JOI君很讨厌某个挂饰,那么这个挂饰的喜悦值就是一个负数。
    JOI君想要最大化所有挂饰的喜悦值之和。注意不必要将所有的挂钩都挂上挂饰,而且一个都不挂也是可以的。
    Input
    第一行一个整数N,代表挂饰的个数。
    接下来N行,第i行(1<=i<=N)有两个空格分隔的整数Ai和Bi,表示挂饰i有Ai个挂钩,安装后会获得Bi的喜悦值。 
    Output
    输出一行一个整数,表示手机上连接的挂饰总和的最大值
    Sample Input
    5
    
    0 4
    
    2 -2
    
    1 -1
    
    0 1
    
    0 3
    Sample Output
    5
    HINT
    将挂饰2直接挂在手机上,然后将挂饰1和挂饰5分别挂在挂饰2的两个挂钩上,可以获得最大喜悦值4-2+3=51<=N<=2000
    
    0<=Ai<=N(1<=i<=N)
    
    -10^6<=Bi<=10^6(1<=i<=N)
    
    Source
    JOI 2013~2014 春季training合宿 竞技4 By PoPoQQQ

    简单的背包(?)

    //Stay foolish,stay hungry,stay young,stay simple
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    
    const int MAXN=2005;
    
    inline int rd(){
        int ret=0,f=1;char c;
        while(c=getchar(),!isdigit(c))f=c=='-'?-1:1;
        while(isdigit(c))ret=ret*10+c-'0',c=getchar();
        return ret*f;
    } 
    
    int f[MAXN][MAXN];
    int n;
    
    struct Node{
        int a,b;
    }nodes[MAXN];
    
    bool cmp(const Node &x,const Node &y){
        return x.a> y.a ;
    }
    
    int main(){
        n=rd();
        memset(f,0xcf,sizeof(f));
        for(int i=1;i<=n;i++) nodes[i].a = rd(),nodes[i].b = rd();
        sort(nodes+1,nodes+1+n,cmp);
        f[0][1]=0;
        for(int i=1;i<=n;i++){
            for(int j=0;j<=n;j++){
                f[i][j]=max(f[i-1][j],f[i-1][max(j-nodes[i].a,0)+1]+nodes[i].b);
    //          cout<<f[i][j]<<endl;
            }
        }
        int ans=0;
        for(int i=0;i<=n;i++) ans=max(ans,f[n][i]);
        cout<<ans<<endl;
        return 0;
    }
    

    本文来自博客园,作者:GhostCai,转载请注明原文链接:https://www.cnblogs.com/ghostcai/p/9247400.html

  • 相关阅读:
    DevExpress中的gridControl选择问题
    使用IL DASM来查看接口内的自动属性
    多态的使用 虚方法、抽象类、接口
    匿名类的使用及原理
    JAVA小问题解决办法
    数据库02
    数据库01(验证连接是否成功)
    Java 类库知识总结
    Java多线程知识总结(补充)
    java Thread和Runable的深刻理解
  • 原文地址:https://www.cnblogs.com/ghostcai/p/9247400.html
Copyright © 2020-2023  润新知