魔法禁书目录2:回家(codevs 3024)
大妈打完三战回家,我知道他是怎么回来的,欧洲到日本有L个站点他决定乘坐恰好n次飞机(不是学院都市的超音速飞机)和m次火车来从第一个站点到达最后一个站点。但是有一点很重要的就是跟御坂美琴那样的壕不同大妈很穷,所以他决定要尽量花费最少的费用,当然如果能赚到钱那就更好了。由于当麻交友甚广,他们在某些站点可以见到一些故友,可以得到资助,而在有些站点不但不会赚钱,还会因为要住宿,买车票,旅游等而花费一定的费用。如果他乘坐火车,那么就会受到所经过的站点(包括终点不包括起点)的影响,花费一定费用或赚到一定的钱,而他做飞机的话就不会受到站点的影响,他已经知道了每个站点的情况,为防止钱花的过多被index咬头他决定找你来帮他找到最省钱(赚钱)的方案
输入文件back.in第一行包含三个整数,为他们决定坐火车的次数m,他们决定坐飞机的次数n,站点数L。第二行为L个整数,每个数都在-200到200之间,表示每个站点的情况,正数表示能赚到钱,负数表示会花费钱。
输出文件back.out包含一个整数,表示他们最多能赚到多少钱(如果入不敷出就输出负数来表示他们花了多少钱)。
6 6 14
12 32 43 -1 32 -9 -10 32 -43 -21 -32 12 -31 -3
150
【样例解释】
一种最赚钱的方法为: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)的更多相关文章
- [Nowcoder212D]禁书目录_概率期望
禁书目录 题目大意:清教需要定期给Index清除记忆,在此之前需要把当中的十万三千本禁书取出来......不幸的是,禁书一旦离开了Index就非常脆弱,具体来说,每一本禁书都有一个魔力值 ai ,其记 ...
- 牛客 Wannafly 挑战赛26D 禁书目录 排列组合 概率期望
原文链接https://www.cnblogs.com/zhouzhendong/p/9781060.html 题目传送门 - NowCoder Wannafly 26D 题意 放一放这一题原先的题面 ...
- T1079 回家 codevs
http://codevs.cn/problem/1079/ 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver~死坑 题目描述 Description 现在是晚 ...
- day-4
/* 早上黑板上的倒计时变成了120小时 嗯 很快就要结束了 上午考试 据老师说很简单 老师 :"我就说说~"..... 下午改题 T3好辣脑子 感觉智商不够了 T2dp写丑了 然 ...
- Front Page
General Team FST stay night from ShanDong University 19 - 20 CCPC QinHuangDao Gold (4 th) IUPC YinCh ...
- 【JAVA 文件概述】
一.概述 使用此类的原因: 该类将文件或者文件夹封装成对象.方便对文件与文件夹的属性信息进行操作.File对象作为参数传递给流的构造函数.要求:使用File类的常用方法. windows平台下,目录分 ...
- Qt Creator提示"Qt没有被正确安装,请运行make install"的解决办法
笔者最近使用Qt在开发一些小程序,觉得这个框架设计确实很好,使用了信号和槽解决了组件之间的通讯问题,可以说是基于C++语言上一个非常大的创新,大大提高了开发人员的编码效率,也使整个C++语言更加抽象. ...
- Atlas安装及配置
==============linux下快捷键==================ctrl+insert 复制shift +insert 粘贴 输入文件名的前三个字母,按tab键自动补全文件名 在vi ...
- Linux简单的常用命令——纯手打(慢慢积累)
==============linux下快捷键==================ctrl+insert 复制shift +insert 粘贴 输入文件名的前三个字母,按tab键自动补全文件名 在vi ...
随机推荐
- js验证姓名和身份证号
js验证真实姓名,是用的unicode字符的来进行匹配,而中国人的姓名长度一般都是2-4,所以重复匹配{2,4}次 1.js验证真实姓名 1 var regName =/^[\u4e00-\u9fa5 ...
- Hibernate框架之入门案例
今天终于开始学习了三大框架的其中一个框架,Hibernate框架,在这里不去讲Hibernate框架的一些基础概念了,直接切入代码,带大家了解一下Hibernate能干什么, Hibernate的人们 ...
- Knockout.Js案例一Introduction
</strong></p> <p>Last name: <strong data-bind="text:lastName ">tod ...
- Linux中获取本机网络信息的几个函数及应用
一.读取/etc/hosts 几个函数 头文件<netdb.h> 1.void sethostent(int stayopen);//开打/etc/hosts 配置文件 2.struct ...
- 教你如何在Kali Linux 环境下设置蜜罐?
导读 Pentbox是一个包含了许多可以使渗透测试工作变得简单流程化的工具的安全套件.它是用Ruby编写并且面向GNU/Linux,同时也支持Windows.MacOS和其它任何安装有Ruby的系统. ...
- 阻止点击<a>标签链接跳转
我们常用的在a标签中有点击事件(<a href="地址">链接</a>),其中“href”参数只要不为空,点击该链接时,页面会自动跳转:如果指定的“hr ...
- 我要阻止做java开发的男朋友去创业型公司工作吗?
命这样的标题,我没有瞧不起创业型公司,我只是有点急了,因为男朋友今天晚上就要回复招聘公司了.我先来说说来由吧. 前段时间男朋友离职了,从毕业到现在在公司呆了2年多,因为资金不足导致他做的项目被迫停止了 ...
- centos: vmware 安装centos 7连不上网
在vmware上安装centos 7时,安装完成后无法连接网络,通过搜索查找原来是有线网卡没有激活,默认情况下centos和redhat都不启用有线网卡,只能手动开启或者安装时直接启用. 1.进入命令 ...
- 1.2---翻转字符串(CC150)
import java.util.*; public class Reverse { public String reverseString(String iniString) { // write ...
- C/C++程序员必须熟练应用的开源项目[转]
作为一个经验丰富的C/C++程序员, 肯定亲手写过各种功能的代码, 比如封装过数据库访问的类, 封装过网络通信的类,封装过日志操作的类, 封装过文件访问的类, 封装过UI界面库等, 也在实际的项目中应 ...