zoukankan      html  css  js  c++  java
  • [NOIP2006]金明的预算方案(dp)




    说明/提示

    NOIP 2006 提高组 第二题

    // luogu-judger-enable-o2
    #include<bits/stdc++.h>
    using namespace std;
    const int N= 61;
    int son[N][2],f[51000],a[N],b[N],p[N],len,m,n,fa,ans;
    int main()
    {
       scanf("%d%d",&m,&n);
       m=m/10;
       for(int i=1;i<=n;i++){
        scanf("%d%d%d",&a[i],&b[i],&fa);
        a[i]/=10;
        if(fa==0)p[++len]=i; 
        else{
            if(!son[fa][1])son[fa][1]=i;
            else son[fa][2]=i;
        } 
       }
       for(int i=1;i<=len;i++){
           int fa=p[i]; 
        for(int j=m;j>=a[fa];j--){
            f[j]=max(f[j],f[j-a[fa]]+a[fa]*b[fa]);
            int s1=son[fa][1],s2=son[fa][2];
            if(s1!=0&&j-a[fa]-a[s1]>=0){
              f[j]=max(f[j],f[j-a[s1]-a[fa]]+a[fa]*b[fa]+a[s1]*b[s1]);    
            }
            if(s2!=0){
                if(j-a[fa]-a[s2]>=0)f[j]=max(f[j],f[j-a[s2]-a[fa]]+a[fa]*b[fa]+a[s2]*b[s2]);
                if(j-a[fa]-a[s1]-a[s2]>=0)f[j]=max(f[j],f[j-a[s1]-a[s2]-a[fa]]+a[fa]*b[fa]+a[s1]*b[s1]+a[s2]*b[s2]);
            }
        ans=max(ans,f[j]);
        }
       }
       printf("%d",ans*10);
       return 0;
    }
    满堂花醉三千客,一剑霜寒十四州
  • 相关阅读:
    http协议
    db2 将逗号分隔数据转换为多值IN列表
    jquery deferred
    ps -ef|grep htpd|wd -l
    mysql 触发器
    css 五角星 (转)
    java 问题
    浏览器假死
    js math atan2
    CSS伪类选择器
  • 原文地址:https://www.cnblogs.com/phemiku/p/11420905.html
Copyright © 2011-2022 走看看