bzoj 2748 音量调节 DP 解题报告

来源:互联网 发布:宝信软件同花顺 编辑:程序博客网 时间:2024/05/29 16:49

Description

一个吉他手准备参加一场演出。他不喜欢在演出时始终使用同一个音量,所以他决定每一首歌之前他都要改变一次音量。在演出开始之前,他已经做好了一个列表,里面写着在每首歌开始之前他想要改变的音量是多少。每一次改变音量,他可以选择调高也可以调低。
音量用一个整数描述。输入文件中给定整数beginLevel,代表吉他刚开始的音量,以及整数maxLevel,代表吉他的最大音量。音量不能小于0也不能大于maxLevel。输入文件中还给定了n个整数c1,c2,c3…..cn,表示在第i首歌开始之前吉他手想要改变的音量是多少。
吉他手想以最大的音量演奏最后一首歌,你的任务是找到这个最大音量是多少。

Input

第一行依次为三个整数:n, beginLevel, maxlevel。
第二行依次为n个整数:c1,c2,c3…..cn。

Output

输出演奏最后一首歌的最大音量。如果吉他手无法避免音量低于0或者高于maxLevel,输出-1。

Sample Input

3 5 10

5 3 7

Sample Output

10

HINT

1<=N<=50,1<=Ci<=Maxlevel 1<=maxlevel<=1000

0<=beginlevel<=maxlevel

思路

这道题是一个普通的动态规划,而且数据很弱,并不需要什么乱七八糟的优化,直接两重循环,枚举状态即可。
用二维数组来DP,dp[i][j]=1表示第i首歌音量为j可行,DP方程为:

if ((dp[i-1][j+c[i]]==1&&j+c[i]<=maxn)||(dp[i-1][j-c[i]]==1&&j-c[i]>=0)) dp[i][j]=1;    

好长!
意思就是由i-1的状态,判断+推导得出dp[i,j]的状态是否存在,决策有两种:升高音量或降低音量,如果j-c[i]<0就不能升高音量,j+c[i]>maxLevel就不能降低音量,最后从后向前遍历一遍的状态,求出使dp[n,i]=true的最大的i即为答案。

我去,才发现这竟然是省选题。。。这。。。好吧。
河南省选真良心。

代码

一如既往的丑

#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<cmath>#include<vector>using namespace std;const int N=1000+5; int dp[N][N],c[N],sta,maxn,n; int main(){    scanf("%d%d%d",&n,&sta,&maxn);    for (int i=1;i<=n;i++)    scanf("%d",&c[i]);    dp[0][sta]=1;    for (int i=1;i<=n;i++)    for (int j=0;j<=maxn;j++)    if ((dp[i-1][j+c[i]]==1&&j+c[i]<=maxn)||(dp[i-1][j-c[i]]==1&&j-c[i]>=0))    dp[i][j]=1;          for (int i=maxn;i>=0;i--)    if (dp[n][i]) {printf("%d\n",i);return 0;}    printf("-1\n");    return 0;}
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 苹果手机通讯录丢失了怎么办 苹果换id通讯录没有了怎么办 华为p7 更新重启怎么办 打电话的图标没了怎么办 苹果手机wifi信号弱怎么办 没电脑想装wifi怎么办 阿巴町手表二维码丢了怎么办 儿童手表二维码丢了怎么办 电话手表二维码丢了怎么办 360儿童手表二维码丢了怎么办 喜书郎电话手表二维码丢了怎么办 微信充话费充错号码怎么办 话费冲到了副卡怎么办 冲话费冲错了怎么办 微信支付未到账怎么办 速卖通修补配件到国外怎么办 速卖通流量低怎么办 速卖通被判定重复铺货怎么办 拼多多商品降权怎么办 运满满有了差评怎么办 房贷款还清后该怎么办 身份证被偷了怎么办啊 苹果手机wifi速度慢怎么办 电脑桌面上的图标不见了怎么办 夏天手机没地方放怎么办 上班手机没地方放怎么办 京东退款未到账怎么办 京东退款失败后怎么办 在京东申请退款怎么办 微信退款没收到钱怎么办 在拼多多不发货怎么办 扫二维码群发微信骗局怎么办 电脑高清晰音频管理器打不开怎么办 吃鸡耳机有杂音怎么办 分期付款车被朋友卖了怎么办 网上购物付款显示繁忙怎么办 同行招牌高于我的招牌怎么办 拼多多刷手退款怎么办 网银卡在手机上卸载了怎么办 企业网银密码忘了怎么办 网银钱转错了怎么办