吃饭

吃饭

题目描述

桐桐放学了,在学校食堂吃起了饭….
这里的饭十分好吃,但是桐桐的钱有限且肚子空间有限(^_^),虽然每种饭有无限多,但他只能吃部分,且每一种饭可增加一定的能量。桐桐觉得自己有点胖,于是下了一个决心:我今天只吃第二多能量值的饭!
请你输出他所吃的饭的能量值。
注意:第二多能量值的饭一定不等于最多能量值。

输入

共n+l行。
第1行三个数n,m,o,表示有n种食物供选择(每种食物可以选无限次),桐桐带了m元钱,肚子空间为o。
第2行到第n+l行,每行3个数ai,bi,ci,分别表示第i个食物需要花ai元钱,占用bi个肚子空间,而获得ci个能量值。

输出

1行,为第二多的能量值,如果你没有第二多,则输出“error”。

样例输入

10 7 3
4 1 133
1 2 420
4 1 98
5 3 762
7 3 91
5 1 746
2 2 910
4 1 655
2 2 271
5 3 286

样例输出

1565

提示

 

30%的数据满足:l≤n≤10 1≤m,o≤10;
50%的数据满足:l≤n≤100 l≤m,o≤100;
i00%的数据满足:1≤n≤100 1≤m,o≤1000。

分析:完全背包,注意先判断,再更新

代码:

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <climits>
#include <cstring>
#include <string>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <vector>
#include <list>
#include <ext/rope>
#define rep(i,m,n) for(i=m;i<=n;i++)
#define rsp(it,s) for(set<int>::iterator it=s.begin();it!=s.end();it++)
#define vi vector<int>
#define pii pair<int,int>
#define mod 1000000007
#define inf 0x3f3f3f3f
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define ll long long
#define pi acos(-1.0)
const int maxn=1e3+10;
const int dis[4][2]={{0,1},{-1,0},{0,-1},{1,0}};
using namespace std;
using namespace __gnu_cxx;
ll gcd(ll p,ll q){return q==0?p:gcd(q,p%q);}
ll qpow(ll p,ll q){ll f=1;while(q){if(q&1)f=f*p;p=p*p;q>>=1;}return f;}
int n,m,o,dp[maxn][maxn],ma,mi;
int main()
{
    int i,j,k,t;
    ma=mi=-inf;
    memset(dp,-inf,sizeof(dp));
    dp[0][0]=0;
    scanf("%d%d%d",&n,&m,&o);
    while(n--)
    {
        int a,b,c;
        scanf("%d%d%d",&a,&b,&c);
        for(i=a;i<=m;i++)
            for(j=b;j<=o;j++)
            {
                if(dp[i-a][j-b]+c>ma)
                {
                    mi=ma;
                    ma=dp[i-a][j-b]+c;
                }
                else if(dp[i-a][j-b]+c>mi&&dp[i-a][j-b]+c<ma)
                    mi=dp[i-a][j-b]+c;
                dp[i][j]=max(dp[i][j],dp[i-a][j-b]+c);
            }
    }
    if(mi>0)printf("%d\n",mi);
    else puts("error");
    //system ("pause");
    return 0;
}

 

posted @ 2016-07-24 12:58  mxzf0213  阅读(242)  评论(-1编辑  收藏  举报