P1877 [HAOI2012]音量调节 题解

P1877 [HAOI2012]音量调节 

#include<cstdio>
using namespace std;
int n,begin,maxlevel;
int ans;
int a[51];
bool f[51][1001];
int main()
{
    scanf("%d%d%d",&n,&begin,&maxlevel);
    f[0][begin]=1;
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&a[i]);
    }
    for(int i=1;i<=n;i++)
    {
    	for(int j=maxlevel;j>=0;j--)
        {
            if(j-a[i]>=0)
                f[i][j]=f[i][j]||f[i-1][j-a[i]];
            if(j+a[i]<=maxlevel)
                f[i][j]=f[i][j]||f[i-1][j+a[i]];
        }
    }
    for(int i=maxlevel;i>=1;i--)
    {
        if(f[n][i]==1)
        {
            printf("%d",i);
            return 0;
        }
    }
    printf("-1");
    return 0;
}

  

posted @ 2022-03-21 07:10  心悟&&星际  阅读(29)  评论(0编辑  收藏  举报