zoukankan      html  css  js  c++  java
  • 「BZOJ 2748」音量调节 (背包)

    题意:原题在这
     

    有n个歌曲,每个歌曲有Mike想要调节到的音量

    给定初始音量和一次能调节的最大音量,求演奏最后一首歌时的最大音量

    做法:
     

    这是我见过最水的背包...... 

    dp[i][j]表示唱到第i首歌,音量为j的状态是否合法

    判断一波调高或调低的时候会不会越界,不越界的话就dp一下

    完全没有什么要注意的......  然而输出WA了好几次

     
     
    代码:
     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 using namespace std;
     6 
     7 int n,bg,maxv;
     8 int vol[55];
     9 bool dp[55][1050];
    10 
    11 int read()
    12 {
    13     char ch=getchar();int x=0,f=1;
    14     while(ch<'0' || ch>'9'){ if(ch=='-') f=-1; ch=getchar();}
    15     while(ch>='0' && ch<='9'){ x=x*10+ch-'0'; ch=getchar();}
    16     return x*f;
    17 }
    18 
    19 int main()
    20 {
    21     n=read(); bg=read(); maxv=read();
    22     for(int i=1;i<=n;i++) vol[i]=read();
    23     dp[0][bg]=1;
    24     for(int i=1;i<=n;i++)
    25     {
    26         for(int j=0;j<=maxv;j++)
    27         {
    28             if(j-vol[i]>=0)//音量调高
    29                 if(dp[i-1][j-vol[i]]) dp[i][j]=1;
    30             if(j+vol[i]<=maxv)//音量降低
    31                 if(dp[i-1][j+vol[i]]) dp[i][j]=1;
    32         }
    33     }
    34     for(int i=maxv;i>=0;i--)
    35     {
    36         if(dp[n][i])
    37         {
    38             cout<<i<<endl; return 0;
    39         }
    40     }
    41     cout<<"-1"<<endl;
    42     return 0;
    43 }
  • 相关阅读:
    markdown语法及工具
    关于div的宽度或高度设置为100%时
    响应式css垂直居中
    JavaScript之闭包问题以及立即执行函数
    JavaScript和JQuery好书推荐
    数组中去重
    解决getImageData跨域问题
    js在for循环中绑定事件
    表格横竖颠倒
    上传按钮美化遇到的问题
  • 原文地址:https://www.cnblogs.com/LocaEtric/p/9180948.html
Copyright © 2011-2022 走看看