POJ 1976 A Mini Locomotive

题意:给出n车厢以及n节车厢内的人数 现有三节迷你火车头 每个火车头可以拉连续的m节车厢 问三个火车头最多可以拉多少人。

dp[i][j]表示第i节车厢有j个车头可以拉的总人数 dp[i][j]=max(dp[i-1][j],dp[k][j-1]+a[i]-a[k]) k=max(i-m,0) 前一个表示该节车厢不拉 后一状态表示加一个火车头拉

#include <iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int a[50005],dp[50005][4];
int main()
{
    int t,n,m,k;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d",&n);
        memset(dp,0,sizeof(dp));
        a[0]=0;
        for(int i=1; i<=n; i++)
            scanf("%d",&a[i]),a[i]+=a[i-1];
        scanf("%d",&m);
        for(int i=1; i<=n; i++)
            for(int j=1; j<4; j++)
            {
                k=i-m<0?0:i-m;
                dp[i][j]=max(dp[i-1][j],dp[k][j-1]+a[i]-a[k]);
            }
        printf("%d\n",dp[n][3]);
    }
    return 0;
}
时间: 2024-08-19 04:42:57

POJ 1976 A Mini Locomotive的相关文章

poj 1976 A Mini Locomotive(0/1背包)

点击打开链接poj 1976 思路: 0/1背包 分析: 1 题目给定n个数,要求三段连续的m个数之和最大 2 假设n个数是num[1],num[2],num[3]......num[n],那么m个连续的数可能有n-m+1种可能即num[1]+num[2]...+num[k] , num[2]+num[3]...+num[k]...... 3 我们令v[1] = num[1]+num[2]...+num[k] , v[2] = num[2]+num[3]...+num[k].那么总的有n-m+1

算法:poj 1976 A Mini Locomotive (dp 二维01背包)

题目大意: 某个车站有N个火车车厢,编号为1-N,每个车厢上有xi个人. 这个车站还有 三个火车头,他们能拉最多m个车厢(m<=N/3),而且这m个车厢的编号要连续的.问这三个火车头最多 能拉多少个人. 思路: 因为m<=N/3, 所以按照贪心的思想,为了拉更多的人,每个火车 头一定是要拉m个连续的车厢. 然后,为了求某段连续的车厢共有多少人,可以前缀和预处理, 某 一段和=sum[ i ] - sum[ i-m]. f[i][j] 代表前i个车厢,用j个火车头拉,最多能拉多少人. 对于第i个

POJ题目分类

初期: 一.基本算法:      (1)枚举. (poj1753,poj2965)      (2)贪心(poj1328,poj2109,poj2586)      (3)递归和分治法.      (4)递推.      (5)构造法.(poj3295)      (6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996) 二.图算法:      (1)图的深度优先遍历和广度优先遍历.      (2)最短路径算法(dijkstra,bellman-ford

poj 1226我的代码为什么wa,求hack,给出测试数据,或者思路的错误

问题描述 poj 1226我的代码为什么wa,求hack,给出测试数据,或者思路的错误 代码如下: //#include #include #include #include #include #include using namespace std; const int maxn = 105; int next[maxn]; int ans[maxn]; string s[maxn]; void getnext(string a) { int i = 0;int j = -1; next[0]

1976 至 2011 苹果产品回顾

1.创业之初 在正式创建苹果之前,史蒂夫·乔布斯(Steve Jobs)刚刚21岁.当时乔布斯经常同他的两位好友史蒂夫·沃兹尼亚克(Steve Wozniak).罗纳德·韦恩(Ronald Wayne)一起玩耍.或许这三人本来可组建一家摇滚乐队,只是这三位好友另有想法. 当时乔布斯和韦恩同在一名为Atari的公司工作,而沃兹尼亚克在惠普工作.1976年4月 1,这三位好友创建了苹果电脑公司.虽然苹果的最初创始人为三位,但仅仅三个月之后,韦恩就以800美元的低廉价格将自己所持苹果股份出售.由此一来

小米路由器mini怎么绑定远程下载

迅雷远程下载需要两个步骤:1.绑定各个版本迅雷:PC迅雷.智能路由器迅雷.智能盒子迅雷(看个人的选择,也可以绑定其中一个设备),将其添加到支持远程下载设备清单,使其支持离线下载.2.然后通过迅雷远程下载网站.手机迅雷客户端两种方式来进行远程下载. 只有将小米路由器mini绑定迅雷远程下载后,才能支持迅雷远程下载,下面给你详细介绍下小米盒子绑定迅雷远程下载的方法 小米路由器mini怎么绑定远程下载 小米路由器mini绑定迅雷远程下载教程 1.安装最新版小米路由器mini手机客户端 2.点击左下角[

iPad mini iOS 6版用户操作指南已发布

和往常一样,苹果在推出新iOS设备后,便会发布该设备的用操作使用指南,之前有用户抱怨iOS 6 正式发布已经过去一个月的时间,但苹果还是没有更新 iPad 用户指南,他们认为可能觉得是苹果想等待 iPad mini发布之后再进行更新.看来用户的猜测是正确的,苹果今天对用户发布了ipad mini iOS版本的用户操作指南. iPad mini iOS 6版用户操作指南下载地址: http://www.moreapps.org/wp-content/uploads/ipad_Mini_user_g

联想newifi mini如何升级?

  方法一.在线升级 如果有网络,那么可以将联想newifi mini路由器与电脑连接,然后再进入联想newifi mini设置,选择在线更新升级. 具体方法,进入联想newifi mini管理界面,然后进入[路由器设置]-选择[路由器系统升级],然后点击右侧的[升级]即可,如下图所示. 如果检测到有新固件可更新,则即可完成在线升级固件. 方法二.手动升级 首先需要自行下载联想newifi mini新版固件,大家可以前往联想newifi路由器官网下载,先将固件先下载到电脑中; 然后同样是进入联想

联想新路由newifi mini信号强度怎么调?

联想新路由newifi mini信号强度设置方法 1.确定操作之前,路由器USB接口接入了移动存储设备,如U盘等. 2.在浏览器输入网址http://192.168.99.1打开newifi mini的管理界面,在扩展应用里面找到可以设置WiFi信号强度的插件. 3.进入安装界面,会看到有该插件的简介及应用配置,在进行设置之前,详细阅读简介中的内容,避免因设置不当带来的麻烦. 4.点开应用配置,分别选择2.4G无线与5G无线需要的信号强度,设置完成之后点击"启动"按钮并保存你当前的设置