tyvj 1387 迷你火车头
dp百题进度条[1/100]
一列火车有一个火车头拖着一长串的车厢,每个车厢有若干个乘客。
一旦火车头出了故障,所有的车厢就只能停在铁轨上了,因此铁路局给每列火车配备了三个迷你火车头,每个迷你火车头可以拖动一定数量的车厢,以便火车头发生故障后能够拖走部分车厢。
铁路部门对迷你火车头作了如下规定:
1.迷你火车头能够拖动的最大车厢数是确定的,这个数量对三个迷你火车头都是相同的。
2.一旦火车头发生故障,迷你火车头要拖走尽可能多的旅客,每节车厢的旅客数事先是已知的,并且旅客不得随意更换车厢。
3.一个迷你火车头拖走的车厢必须是连续的,所有车厢从1开始编号。
假如有7节车厢,一个迷你火车头最多可以拖动二节车厢,1到7号车厢中的旅客人数分别为35,40,50,10,30,45和60。
如果三个迷你火车头拖走的车厢分别是1-2,3-4和6-7,它们带走的旅客总数将达到240人,其它任何方案都不可能超过该数,所以240就是这个问题的解。
给定车厢数,每节车厢的旅客人数和一个迷你火车头能拖动的最大车厢数,写一个程序求出三个迷你火车头最多能带走的旅客数。
输入格式
输入文件共有三行。
第一行为一个正整数n,其中n<=50,000,表示车厢总数;
第二行为n个用空格隔开的整数,依次表示n节车厢的旅客人数,每节车厢人数不超过100;
第三行为一个正整数m表示迷你火车头能够拖动的最大车厢数,其中m<=n/3。
输出格式
输出文件仅有一行包含一个整数表示三个迷你火车头最多能带走的旅客数。
1
测试样例1
输入
7
35 40 50 10 30 45 60
2
输出
240
我们定义dp[i][j]为第i个火车头时,拖了前j个车厢的最大值
我们用front数组来存前缀
状态转移方程
dp[i][j] = max_(dp[i][j - 1],dp[i - 1][j - m] + front[j] - front[j - m]);
Code
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int MAXN = 50000 + 5;
int n,t,m;
int dp[5][MAXN],train[MAXN],front[MAXN];
int max_(int x,int y){
if (x > y) return x;
else return y;
}
int main(){
scanf("%d",&t);
while(t--){
scanf("%d",&n);
for (register int i = 1 ; i <= n ; i++) scanf("%d",&train[i]),front[i] = front[i - 1] + train[i];
scanf("%d",&m);
for (register int i = 1 ; i <= 3 ; i++){
for (int j = m ; j <= n ; j++){
dp[i][j] = dp[i][j - 1];
dp[i][j] = max_(dp[i][j - 1],dp[i - 1][j - m] + front[j] - front[j - m]);
}
}
printf("%d\n",dp[3][n]);
}
return 0;
}
tyvj 1387 迷你火车头的更多相关文章
- ASP.NET Core管道深度剖析(2):创建一个“迷你版”的管道来模拟真实管道请求处理流程
从<ASP.NET Core管道深度剖析(1):采用管道处理HTTP请求>我们知道ASP.NET Core请求处理管道由一个服务器和一组有序的中间件组成,所以从总体设计来讲是非常简单的,但 ...
- [LeetCode] Mini Parser 迷你解析器
Given a nested list of integers represented as a string, implement a parser to deserialize it. Each ...
- [BZOJ3223]Tyvj 1729 文艺平衡树
[BZOJ3223]Tyvj 1729 文艺平衡树 试题描述 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区 ...
- [BZOJ3224]Tyvj 1728 普通平衡树
[BZOJ3224]Tyvj 1728 普通平衡树 试题描述 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:1. 插入x数2. 删除x数(若有多个相同的数,因只删除一个) ...
- 循序渐进做项目系列(4)迷你QQ篇(2)——视频聊天!(附源码)
一·效果展示 源码派送:MiniQQ1.1 文字聊天的实现参见:循序渐进做项目系列(3):迷你QQ篇(1)——实现客户端互相聊天 二·服务端设计 对于实现视频聊天而言,服务端最核心的工作就是要构造多媒 ...
- 循序渐进做项目系列(3):迷你QQ篇(1)——实现客户端互相聊天
<循序渐进做项目系列迷你QQ篇>将陆续介绍客户端聊天,文件传输,加好友,群聊,包括语音聊天,视频聊天,远程桌面等等需求如何实现,感兴趣的朋友可以持续关注.考虑到某些需求较为复杂,本系列采用 ...
- 迷你MVVM框架 avalonjs 入门教程
新官网 请不要无视这里,这里都是链接,可以点的 OniUI组件库 学习教程 视频教程: 地址1 地址2 关于AvalonJs 开始的例子 扫描 视图模型 数据模型 绑定 作用域绑定(ms-contro ...
- 自用迷你版的Deferred
啥也不说贴代码,项目用 /** * 迷你版的deferred */ function Deferred(func) { if (this instanceof Deferred === false) ...
- 迷你版jQuery——zepto核心源码分析
前言 zepto号称迷你版jQuery,并且成为移动端dom操作库的首选 事实上zepto很多时候只是借用了jQuery的名气,保持了与其基本一致的API,其内部实现早已面目全非! 艾伦分析了jQue ...
随机推荐
- 2019-10-24:渗透测试,sqli-labe,less18,19关
less19基于错误_POST_Referer_请求头注入 查看关键源码,跟18关不一样的只是,回显的是Referer不是User-Agent,判断INSERT语句结构:INSERT INTO tab ...
- 记一次安卓app上线应用宝
背景:前几个月开发了一个安卓app(用的是Dcloud公司的uniapp框架),已经成功上线华为应用市场和小米应用市场.之前上线应用宝是因为没有软著,所以一直也没上线.近期甲方又提出了上架应用宝,于是 ...
- day 27 网路编程 面向对象多继承
知识补充: 字符串转化为字节 string1 = input(“请输入你的名字”) string1.encode('utf-8') 字节转化为字符串 byte1 = b"alex" ...
- vue 做一个简单的TodoList
目录结构 index.html <!DOCTYPE html> <html> <head> <meta charset="utf-8"&g ...
- C#学习笔记04--排序/查找/二维数组/交叉数组
一. 冒泡排序(重点) 思路: 每次比较把较小的放在前面, 大的放到后面; 图解:下图是最坏情况下的排序 ` 冒泡排序m个元素, 就有(m-1)趟排序, 第一趟m-1次, 第二趟 m-2次.... ...
- mybatis精讲(四)--ObjectFactory
目录 前言 mybatis的ObjectFactory 源码 setProperties create instantiateClass 使用场景 # 加入战队 微信公众号 前言 ObjectFact ...
- pymongo的基本操作和使用
MongoDB简介 MongoDB是一个开源的文档类型数据库,它具有高性能,高可用,可自动收缩的特性.MongoDB能够避免传统的ORM映射从而有助于开发. 文档 在MongoDB中,一行纪录就是一个 ...
- mui开发:苹果手机自动全屏解决方案
前一段时间,使用mui写app时,出现了苹果手机播放视频时,自动全屏的情况,并且无法点击控件,只能等到播放完毕后点击控件. 那么怎么解决这个问题呢,弟弟们请看我的下面. 1.在页面的video标签中, ...
- c语言作业07
问题 答案 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/8655 我在 ...
- PHP 获取服务器详细信息的原生方法
获取系统类型及版本号: php_uname() (例:Windows NT PCA15130 6.1 build 7601 (Windows 7 Ultimate Edition Ser ...