题目描述 Description

大妈打完三战回家,我知道他是怎么回来的,欧洲到日本有L个站点他决定乘坐恰好n次飞机(不是学院都市的超音速飞机)和m次火车来从第一个站点到达最后一个站点。但是有一点很重要的就是跟御坂美琴那样的壕不同大妈很穷,所以他决定要尽量花费最少的费用,当然如果能赚到钱那就更好了。由于当麻交友甚广,他们在某些站点可以见到一些故友,可以得到资助,而在有些站点不但不会赚钱,还会因为要住宿,买车票,旅游等而花费一定的费用。如果他乘坐火车,那么就会受到所经过的站点(包括终点不包括起点)的影响,花费一定费用或赚到一定的钱,而他做飞机的话就不会受到站点的影响,他已经知道了每个站点的情况,为防止钱花的过多被index咬头他决定找你来帮他找到最省钱(赚钱)的方案

输入描述 Input Description

输入文件back.in第一行包含三个整数,为他们决定坐火车的次数m,他们决定坐飞机的次数n,站点数L。第二行为L个整数,每个数都在-200到200之间,表示每个站点的情况,正数表示能赚到钱,负数表示会花费钱。

输出描述 Output Description

输出文件back.out包含一个整数,表示他们最多能赚到多少钱(如果入不敷出就输出负数来表示他们花了多少钱)。

样例输入 Sample Input

6 6 14

12 32 43 -1 32 -9 -10 32 -43 -21 -32 12 -31 -3

样例输出 Sample Output

150

数据范围及提示 Data Size & Hint

【样例解释】

一种最赚钱的方法为:1-〉2(火车),2-〉3(火车),3-〉4(火车),4-〉5(火车),5-〉7(飞机),7-〉8(火车),8-〉9(飞机),9-〉10(飞机),10-〉11(飞机),11-〉12(火车),12-〉13(飞机),13-〉14(飞机)

【数据范围】

n+m<L

对于60%的数据,1<=n,m<=50,1<=L<=200。

对于100%的数据,1<=n,m<=200,1<=L<=500。

/*
DP方程式很好想的,设f[i][j][k]为用了i次火车,j次飞机,走到k点的最大收益。
转移:f[i][j][k]=max(f[i-1][j][pos]+s[k]-s[pos],f[i][j-1][pos])
但是这样时间和空间都会超,空间数组滚一下,至于时间,我们发现每次更新f[i][j][…]的都是f[i-1][j][…],
所以可以考虑维护一个最大值。
*/
#include<cstdio>
#include<iostream>
#include<cstring>
#define N 210
#define M 60
using namespace std;
int a[N],s[N],f[][M][N],n,c1,c2,mx1[][M][N],mx2[][M][N];
int main(){
memset(f,-/,sizeof(f));
memset(mx1,-/,sizeof(mx1));
memset(mx2,-/,sizeof(mx2));
scanf("%d%d%d",&c1,&c2,&n);
for(int i=;i<=n;i++){
scanf("%d",&a[i]);
s[i]=s[i-]+a[i];
}
f[][][]=mx1[][][]=mx2[][][]=;
for(int i=;i<=c1;i++){
for(int j=;j<=c2;j++){
for(int k=;k<=n;k++){
if(i)f[i&][j][k]=max(f[i&][j][k],mx1[(i+)&][j][k-]+s[k]);
if(j)f[i&][j][k]=max(f[i&][j][k],mx2[i&][j-][k-]);
}
for(int k=;k<=n;k++){
mx1[i&][j][k]=max(mx1[i&][j][k-],f[i&][j][k]-s[k]);
mx2[i&][j][k]=max(mx2[i&][j][k-],f[i&][j][k]);
}
}
for(int j=;j<=c2;j++)
for(int k=;k<=n;k++){
f[i+&][j][k]=-;
mx1[i+&][j][k]=-;
mx2[i+&][j][k]=-;
}
}
printf("%d\n",f[c1&][c2][n]);
return ;
}

魔法禁书目录2:回家(codevs 3024)的更多相关文章

  1. [Nowcoder212D]禁书目录_概率期望

    禁书目录 题目大意:清教需要定期给Index清除记忆,在此之前需要把当中的十万三千本禁书取出来......不幸的是,禁书一旦离开了Index就非常脆弱,具体来说,每一本禁书都有一个魔力值 ai ,其记 ...

  2. 牛客 Wannafly 挑战赛26D 禁书目录 排列组合 概率期望

    原文链接https://www.cnblogs.com/zhouzhendong/p/9781060.html 题目传送门 - NowCoder Wannafly 26D 题意 放一放这一题原先的题面 ...

  3. T1079 回家 codevs

    http://codevs.cn/problem/1079/ 时间限制: 1 s  空间限制: 128000 KB  题目等级 : 白银 Silver~死坑 题目描述 Description 现在是晚 ...

  4. day-4

    /* 早上黑板上的倒计时变成了120小时 嗯 很快就要结束了 上午考试 据老师说很简单 老师 :"我就说说~"..... 下午改题 T3好辣脑子 感觉智商不够了 T2dp写丑了 然 ...

  5. Front Page

    General Team FST stay night from ShanDong University 19 - 20 CCPC QinHuangDao Gold (4 th) IUPC YinCh ...

  6. 【JAVA 文件概述】

    一.概述 使用此类的原因: 该类将文件或者文件夹封装成对象.方便对文件与文件夹的属性信息进行操作.File对象作为参数传递给流的构造函数.要求:使用File类的常用方法. windows平台下,目录分 ...

  7. Qt Creator提示"Qt没有被正确安装,请运行make install"的解决办法

    笔者最近使用Qt在开发一些小程序,觉得这个框架设计确实很好,使用了信号和槽解决了组件之间的通讯问题,可以说是基于C++语言上一个非常大的创新,大大提高了开发人员的编码效率,也使整个C++语言更加抽象. ...

  8. Atlas安装及配置

    ==============linux下快捷键==================ctrl+insert 复制shift +insert 粘贴 输入文件名的前三个字母,按tab键自动补全文件名 在vi ...

  9. Linux简单的常用命令——纯手打(慢慢积累)

    ==============linux下快捷键==================ctrl+insert 复制shift +insert 粘贴 输入文件名的前三个字母,按tab键自动补全文件名 在vi ...

随机推荐

  1. tone mapping简介

    以下内容转自网络: tone Mapping原是摄影学中的一个术语,因为打印相片所能表现的亮度范围不足以表现现实世界中的亮度域,而如果简单的将真实世界的整个亮度域线性压缩到照片所能表现的亮度域内,则会 ...

  2. iOS开发——常见错误——使用MJRefresh返回上一个界面蹦掉的情况

    最近在使用MJRefresh框架时发现了一个bug 下面是我的源代码 前一个界面 -(void)tableView:(UITableView *)tableView didSelectRowAtInd ...

  3. [BZOJ4016][FJOI2014]最短路径树问题

    [BZOJ4016][FJOI2014]最短路径树问题 试题描述 给一个包含n个点,m条边的无向连通图.从顶点1出发,往其余所有点分别走一次并返回. 往某一个点走时,选择总长度最短的路径走.若有多条长 ...

  4. 下载老版本的Xcode

    1.苹果开发者中心,找到Xcode 2.点击下载 3,找到Support 4.找到所需的版本,点击"+"下载 5.安装Xcode,愉快的开发.

  5. caffe学习系列(1):图像数据转换成db(leveldb/lmdb)文件

    参考:http://www.cnblogs.com/denny402/p/5082341.html 上述博文用caffe自带的两张图片为例,将图片转为db格式.博主对命令参数进行了详细的解释,很赞. ...

  6. SQL Server 2008 R2安装图解教程

    一.下载SQL Server 2008 R2安装文件 cn_sql_server_2008_r2_enterprise_x86_x64_ia64_dvd_522233.iso 二.将安装文件刻录成光盘 ...

  7. HDU——PKU题目分类

    HDU 模拟题, 枚举1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 ...

  8. 用消息机制解耦Activity跳转

    我见过的Activity方式有三种: 1, 默认的,在一个Activity里创建一个Intent,然后startActivity/startActivityForResult: 2, 给被跳转到的Ac ...

  9. Struts2中的OGNL通配符

    <action name="*_*" class="action.{1}Action" method="{2}"> 匹配,第一个 ...

  10. HTTP 格式

    HTTP请求报文和HTTP响应报文 HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的.HTTP有两类报文:请求报文和响应报文. HTTP请求报文 一个HTT ...