题目描述

一个吉他手准备参加一场演出。他不喜欢在演出时始终使用同一个音量,所以他决定每一首歌之前他都需要改变一次音量。在演出开始之前,他已经做好一个列表,里面写着每首歌开始之前他想要改变的音量是多少。每一次改变音量,他可以选择调高也可以调低。

音量用一个整数描述。输入文件中整数beginLevel,代表吉他刚开始的音量,整数maxLevel,代表吉他的最大音量。音量不能小于0也不能大于maxLevel。输入中还给定了n个整数$c_1,c_2,c_3,...,c_n$,表示在第i首歌开始之前吉他手想要改变的音量是多少。

吉他手想以最大的音量演奏最后一首歌,你的任务是找到这个最大音量是多少。

输入输出格式

输入格式:

第一行依次为三个整数n, beginLevel, maxLevel。

第二行依次为n个整数 $c_1,c_2,c_3,...,c_n$。

数据规模:

1<=n<=50, 1<=ci<=maxLevel, 1<=maxLevel<=1000, 0<=beginLevel<=maxLevel

输出格式:

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

输入输出样例

输入样例#1: 复制

3 5 10
5 3 7
输出样例#1: 复制

10

吐槽

  这也算省选题……简直了。——hzwer

  然而我思考了两天,我的滚动数组哪里出了问题。最后得出的结论是:滚动数组使用时一定要注意清零,背包问题不用清零是因为没清零的部分影响不了答案。

解题思路

  就是搞一个二维数组,dp[i][j]记录第i首歌是否能为音量j。然后发现状态转移只发生在相邻的两首歌之间,于是可以套上滚动数组,第奇数首歌就在dp[1]里,第偶数首歌就在dp[0]里,判断奇偶就用位运算:$i\&1$,和$i\%2$作用一样。

源代码

 #include<cstdio>
#include<memory.h>
int n,begin,maxv;
int c[];
bool dp[][]; int main()
{
freopen("changingsounds.in","r",stdin);
freopen("changingsounds.out","w",stdout);
scanf("%d%d%d",&n,&begin,&maxv);
dp[][begin]=;
for(int i=;i<=n;i++)
scanf("%d",c+i);
for(int i=;i<=n;i++)
{
memset(dp[i&],,sizeof(dp[i&]));
for(int j=;j<=maxv;j++)
{
if(dp[(i-)&][j])
{
if(j+c[i]<=maxv) dp[i&][j+c[i]]=true;
if(j-c[i]>=) dp[i&][j-c[i]]=true;
}
}
}
for(int i=maxv;i>=;i--)
{
if(dp[n&][i])
{
printf("%d\n",i);
return ;
}
}
printf("-1\n");
return ;
}

洛谷 P1877 BZOJ 2748 cogs 791 [HAOI2012]音量调节的更多相关文章

  1. 洛谷 P1129 BZOJ 1059 cogs 660 [ZJOI2007]矩阵游戏

    题目描述 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏.矩阵游戏在一个N*N黑白方阵进行(如同国际象棋一般,只是颜色是随意的).每次可以对该矩阵进行两种操作: 行交 ...

  2. 洛谷 P1877 [HAOI2012]音量调节

    P1877 [HAOI2012]音量调节 题目描述 一个吉他手准备参加一场演出.他不喜欢在演出时始终使用同一个音量,所以他决定每一首歌之前他都需要改变一次音量.在演出开始之前,他已经做好一个列表,里面 ...

  3. 洛谷P1877 [HAOI2012]音量调节 [2017年4月计划 动态规划05]

    P1877 [HAOI2012]音量调节 题目描述 一个吉他手准备参加一场演出.他不喜欢在演出时始终使用同一个音量,所以他决定每一首歌之前他都需要改变一次音量.在演出开始之前,他已经做好一个列表,里面 ...

  4. BZOJ 2748: [HAOI2012]音量调节 dp

    2748: [HAOI2012]音量调节 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/p ...

  5. Bzoj 2748: [HAOI2012]音量调节 动态规划

    2748: [HAOI2012]音量调节 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 1234  Solved: 777[Submit][Status ...

  6. BZOJ 2748: [HAOI2012]音量调节【二维dp,枚举】

    2748: [HAOI2012]音量调节 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 2010  Solved: 1260[Submit][Statu ...

  7. bzoj 2748: [HAOI2012]音量调节

    2748: [HAOI2012]音量调节 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 872  Solved: 577[Submit][Status] ...

  8. bzoj-2748 2748: [HAOI2012]音量调节(dp)

    题目链接: 2748: [HAOI2012]音量调节 Time Limit: 3 Sec  Memory Limit: 128 MB Description 一个吉他手准备参加一场演出.他不喜欢在演出 ...

  9. 到达型01背包---P1877 [HAOI2012]音量调节

    P1877 [HAOI2012]音量调节 题解 solution 1 普通dfs  60pt dfs 暴搜,pos 记录当前到了第几首歌,level 记录当前的音量 一个小剪枝 由于每换一首歌都要调节 ...

随机推荐

  1. Linux系统下 为命令配置别名

    1.什么是别名 在管理和维护Linux系统的过程中,将会使用到大量命令,有一些很长的命令或用法经常被用到,重复而频繁的输入某个很长命令或用法是不可取的.这时可以使用 别名 功能将这个过程简单化. Li ...

  2. LOJ#120. 持久化序列(FHQ Treap)

    题面 传送门 题解 可持久化\(Treap\)搞一搞 //minamoto #include<bits/stdc++.h> #define R register #define inlin ...

  3. c++ memset函数

    函数名称:memset 函数所需头文件:#include<cstring> 函数作用:内存赋值函数,用来给某一块内存空间进行赋值的. 函数结构:memset(变量,一个数字,一个数字)  ...

  4. JavaScript编程艺术-第10章-10.1-动画

    10.1—最简单的动画 ***代码亲测可用*** 动画:让元素位置随着时间而不断地发生变化 HTML: <!DOCTYPE HTML> <html> <head> ...

  5. Python 模拟postman上传文件

    最近工作需求:写的程序要用到python模拟postman操作,基于flask框架 代码很简单 但是百度一半天: import requests files = {'skFile': open(r&q ...

  6. EasyUI tree 异步树与采用扁平化实现的同步树

    所谓好记性不如烂笔头,为了以防忘记,才写下这篇博客,废话不多.. 异步树: tips:   可以采用easyui里的原始数据格式,也可以采用扁平化的数据格式. 使用场景: 当菜单模块数量庞大或者无限极 ...

  7. Python,报错NameError: name 'math' is not defined

    1 #-*- coding : utf-8 -*- 2 import math 3 4 def move(x, y, step, angle=0): 5 nx = x + step * math.co ...

  8. Redis作者:深度剖析Redis持久化

    Redis是一种面向“key-value”类型数据的分布式NoSQL数据库系统,具有高性能.持久存储.适应高并发应用场景等优势.它虽然起步较晚,但发展却十分迅速. 近日,Redis的作者在博客中写到, ...

  9. Codeforces_765_D. Artsem and Saunders_(数学)

    D. Artsem and Saunders time limit per test 2 seconds memory limit per test 512 megabytes input stand ...

  10. MFC_2.1使用单选和多选框

    使用单选和多选框 单选 1.拖控件 设置名字,CTRL+D设置顺序,属性设置第一个GROUP为TRUE: 2.设置第一个按钮绑定变量为 值 INT型 名称m_RadioIndxe; 3.设置单击响应内 ...