[HAOI2012]音量调节 BZOJ2748 dp
题目描述
一个吉他手准备参加一场演出。他不喜欢在演出时始终使用同一个音量,所以他决定每一首歌之前他都需要改变一次音量。在演出开始之前,他已经做好一个列表,里面写着每首歌开始之前他想要改变的音量是多少。每一次改变音量,他可以选择调高也可以调低。
音量用一个整数描述。输入文件中整数beginLevel,代表吉他刚开始的音量,整数maxLevel,代表吉他的最大音量。音量不能小于0也不能大于maxLevel。输入中还给定了n个整数c1,c2,c3,...,cn,表示在第i首歌开始之前吉他手想要改变的音量是多少。
吉他手想以最大的音量演奏最后一首歌,你的任务是找到这个最大音量是多少。
输入输出格式
输入格式:
第一行依次为三个整数n, beginLevel, maxLevel。
第二行依次为n个整数 c1,c2,c3,...,cn。
数据规模:
1<=n<=50, 1<=ci<=maxLevel, 1<=maxLevel<=1000, 0<=beginLevel<=maxLevel
输出格式:
输出演奏最后一首歌的最大音量。如果吉他手无法避免音量低于0或者高于maxLevel,输出-1。
输入输出样例
10 设 dp[ i ][ j ]表示前 i 次后是否可以到达 j 音量,如果可以,则 dp[ i ][ j ]=1;
最后从maxx遍历,如果 dp[ n ][ j ]=1,输出 j 即可;
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstdlib>
#include<cstring>
#include<string>
#include<cmath>
#include<map>
#include<set>
#include<vector>
#include<queue>
#include<bitset>
#include<ctime>
#include<deque>
#include<stack>
#include<functional>
#include<sstream>
//#include<cctype>
//#pragma GCC optimize(2)
using namespace std;
#define maxn 1000005
#define inf 0x3f3f3f3f
#define INF 9999999999
#define rdint(x) scanf("%d",&x)
#define rdllt(x) scanf("%lld",&x)
#define rdult(x) scanf("%lu",&x)
#define rdlf(x) scanf("%lf",&x)
#define rdstr(x) scanf("%s",x)
typedef long long ll;
typedef unsigned long long ull;
typedef unsigned int U;
#define ms(x) memset((x),0,sizeof(x))
const long long int mod = 1e9 + 7;
#define Mod 1000000000
#define sq(x) (x)*(x)
#define eps 1e-3
typedef pair<int, int> pii;
#define pi acos(-1.0)
const int N = 1005;
#define REP(i,n) for(int i=0;i<(n);i++)
typedef pair<int, int> pii;
inline ll rd() {
ll x = 0;
char c = getchar();
bool f = false;
while (!isdigit(c)) {
if (c == '-') f = true;
c = getchar();
}
while (isdigit(c)) {
x = (x << 1) + (x << 3) + (c ^ 48);
c = getchar();
}
return f ? -x : x;
} ll gcd(ll a, ll b) {
return b == 0 ? a : gcd(b, a%b);
}
ll sqr(ll x) { return x * x; } /*ll ans;
ll exgcd(ll a, ll b, ll &x, ll &y) {
if (!b) {
x = 1; y = 0; return a;
}
ans = exgcd(b, a%b, x, y);
ll t = x; x = y; y = t - a / b * y;
return ans;
}
*/ ll qpow(ll a, ll b, ll c) {
ll ans = 1;
a = a % c;
while (b) {
if (b % 2)ans = ans * a%c;
b /= 2; a = a * a%c;
}
return ans;
} int n;
int bgin;
int maxx; int a[maxn];
int dp[2000][2000]; int main()
{
//ios::sync_with_stdio(0);
rdint(n);
rdint(bgin); rdint(maxx);
for (int i = 1; i <= n; i++)rdint(a[i]);
dp[0][bgin] = 1;
for (int i = 1; i <= n; i++) {
for (int j = 0; j <= maxx; j++) {
if (dp[i - 1][j] && j + a[i] <= maxx)dp[i][j + a[i]] = 1;
if (dp[i - 1][j] && j - a[i] >= 0)dp[i][j - a[i]] = 1;
}
}
for (int i = maxx; i >= 0; i--) {
if (dp[n][i]) { cout << i << endl; return 0; }
}
cout << -1 << endl;
return 0;
}
[HAOI2012]音量调节 BZOJ2748 dp的更多相关文章
- [luoguP1877] [HAOI2012]音量调节(DP)
传送门 绝世傻DP #include <cstdio> #include <iostream> #define N 51 int n, s, mx; bool f[N][100 ...
- bzoj-2748 2748: [HAOI2012]音量调节(dp)
题目链接: 2748: [HAOI2012]音量调节 Time Limit: 3 Sec Memory Limit: 128 MB Description 一个吉他手准备参加一场演出.他不喜欢在演出 ...
- [bzoj2748][HAOI2012]音量调节_动态规划_背包dp
音量调节 bzoj-2748 HAOI-2012 题目大意:有一个初值,给你n个$\delta$值,求最后不超过给定的限制的情况下的改变的最大值.每个$\delta$值可以+也可以-. 注释:$1\l ...
- BZOJ 2748: [HAOI2012]音量调节 dp
2748: [HAOI2012]音量调节 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/p ...
- BZOJ 2748: [HAOI2012]音量调节【二维dp,枚举】
2748: [HAOI2012]音量调节 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 2010 Solved: 1260[Submit][Statu ...
- bzoj2748: [HAOI2012]音量调节(背包)
2748: [HAOI2012]音量调节 题目:传送门 题解: sb省选题..呵呵一眼背包: f[i][j]表示第i时刻能否为音量j 代码: #include<cstdio> #inclu ...
- Bzoj 2748: [HAOI2012]音量调节 动态规划
2748: [HAOI2012]音量调节 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 1234 Solved: 777[Submit][Status ...
- bzoj 2748: [HAOI2012]音量调节
2748: [HAOI2012]音量调节 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 872 Solved: 577[Submit][Status] ...
- 到达型01背包---P1877 [HAOI2012]音量调节
P1877 [HAOI2012]音量调节 题解 solution 1 普通dfs 60pt dfs 暴搜,pos 记录当前到了第几首歌,level 记录当前的音量 一个小剪枝 由于每换一首歌都要调节 ...
随机推荐
- 2016.6.18主窗体、子窗体InitializeComponent()事件、Load事件发生顺序以及SeleChanged事件的发生
主窗体,子窗体的InitializeComponent(构造函数).Load事件执行顺序 1.主窗体定义事件 new 主窗体() 构造函数进入主窗体InitializeComponent函数,该函数中 ...
- redis学习三 redis持久化
1,快照持久化 1简介 redis可以通过创建快照来获得某个时间点上的内存内容的数据副本,有了副本之后,就可以将副本发送到其他redis服务器上从而创建相同数据的从服务器,同时快照留在原 ...
- Linux 下安装redis
记录一下linux下的安装步骤,还是比较复杂的 1. 下载redis-2.8.19.tar.gz: ftp传到linux01上: 解压: tar –zxvf redis-2.8.19.tar.gz 2 ...
- POJ 3580 SuperMemo (FHQ_Treap)
题意:让你维护一个序列,支持以下6种操作: ADD x y d: 第x个数到第y个数加d . REVERSE x y : 将区间[x,y]中的数翻转 . REVOLVE x y t :将区间[x,y] ...
- Codeforces 1077E (二分乱搞或者dp)
题意:给你一个数组,可以从中选区若干种元素,但每种元素选区的个数前一种必须是后一种的2倍,选区的任意2种元素不能相同,问可以选取最多的元素个数是多少? 思路1(乱搞):记录一下每种元素的个数,然后暴力 ...
- Swing事件机制
-------------siwuxie095 Swing 是基于 MVC 结构的框架 在 Swing 中,所有的用户操作都是基于 Co ...
- newcoder中的基础题
1. mysql_num_fields() 函数返回结果集中字段的数 2. <?php class A{ ; } $a = new A(); $b = $a; $a; echo $b-> ...
- explode()与相反函数 implode() 和join()
explode()的函数原型: array explode(string separator,string input [,int limit]); //[,int limit]是表示可选的意思 参数 ...
- C++面向对象类的实例题目三
编写一个程序,设计一个满足如下要求的CData类. (1)用下面的格式输出日期:日/月/年 (2)输出在当前日期上加一天后的日期 (3)设置日期 code: #include<iostream& ...
- 【摘自张宴的"实战:Nginx"】try_files指令
语法:try_files param1 [param2...paramN] fallback 默认值:none 使用环境: location 该指令用于告诉nginx测试每个文件是否存在,并且使用首先 ...