BYSBZ 2748(音量调节-01背包)

来源:岁月联盟 编辑:exp 时间:2012-10-26

一定要读题啊!!
这题说的是——每次一定换,没说前后不能到一个音量。

[cpp] 
#include<cstdio> 
#include<cstring> 
#include<queue> 
#include<cmath> 
#include<cstdlib> 
#include<iostream> 
#include<functional> 
#include<algorithm> 
#include<stack> 
using namespace std; 
#define MAXN  (50 + 10) 
#define MAXMAXLEVEL (1000+1) 
int n,start,maxlevel,a[MAXN]; 
bool f[MAXN][MAXMAXLEVEL]; 
int main() 

//  freopen("changingsounds.in","r",stdin); 
//  freopen("changingsounds.out","w",stdout); 
      
    memset(f,0,sizeof(f)); 
  
    scanf("%d%d%d",&n,&start,&maxlevel); 
    for (int i=1;i<=n;i++) scanf("%d",&a[i]); 
    f[0][start]=1; 
    for (int i=1;i<=n;i++) 
        for (int j=0;j<=maxlevel;j++) 
        { 
            f[i][j]=j-a[i]>=0? f[i-1][j-a[i]] : 0; 
            f[i][j]=j+a[i]<=maxlevel? f[i-1][j+a[i]]||f[i][j] : f[i][j]; 
              
          
              
        } 
    int ans=maxlevel; 
    while (ans>=0&&!f[n][ans]) ans--; 
    cout<<ans<<endl; 
  
  
  
      
//  while (1); 
    return 0; 

 

下一篇:HDU 4419