$dp(i,j)$表示i~j这段还没运走时的状态,包括 运输了多少次,还剩多少空间

每次枚举运输左边还是右边转移

#include <bits/stdc++.h>
#define rep(i, j, k) for (int i = int(j); i <= int(k); ++ i)
#define dwn(i, j, k) for (int i = int(j); i >= int(k); -- i)
using namespace std;
typedef pair<int, int> P;
const int N = 1e4 + ;
P dp[][N];
int w[N]; int main() {
int n, t;
scanf("%d%d", &t, &n);
rep(i, , n) scanf("%d", w + i); P tmp;
auto Enlarge = [&](P &a, P &b) {
if (a.first == -) a = b;
else {
if (a.first > b.first || (a.first == b.first && a.second < b.second)) a = b;
}
};
for (int i = ; i <= n; ++ i) dp[(n & )][i].first = -;
dp[(n & )][] = P(, );
dwn(l, n, ) { // i, j 之间还没消去
int cur = l & , next = cur ^ ;
// cout << l << ' ' << dp[cur][3].first << ' ' << dp[cur][3].second << '\n';
for (int i = ; i <= n; ++ i) dp[next][i].first = -;
for (int i = ; i + l - <= n; ++ i)
if (dp[cur][i].first != -) {
int j = i + l - ;
// 选第i个
if (w[i] <= dp[cur][i].second) {
tmp = P(dp[cur][i].first, dp[cur][i].second - w[i]);
Enlarge(dp[next][i + ], tmp);
}
else {
tmp = P(dp[cur][i].first + , t - w[i]);
Enlarge(dp[next][i + ], tmp);
}
// 选第jge
if (w[j] <= dp[cur][i].second) {
tmp = P(dp[cur][i].first, dp[cur][i].second - w[j]);
Enlarge(dp[next][i], tmp);
}
else {
tmp = P(dp[cur][i].first + , t - w[j]);
Enlarge(dp[next][i], tmp);
} }
}
// cout << dp[0][3].first << ' ' << dp[0][3].second << '\n';
int ans = ;
for (int i = ; i <= n; ++ i)
if (dp[][i].first != -)
ans = min(ans, dp[][i].first);
printf("%d\n", ans); }
/*
4 5
1 1 3 1 2
*/

Petrozavodsk Winter Camp, Day 8, 2014, Ship的更多相关文章

  1. Petrozavodsk Winter Camp, Warsaw U, 2014, A The Carpet

    一个地图上有若干障碍,问允许出现一个障碍的最大子矩形为多大? 最大子矩形改编 #include<bits/stdc++.h> using namespace std; #define re ...

  2. Petrozavodsk Winter Camp, Day 8, 2014, Fine Brochures

    1的个数-块的个数+多减的个数+flag 多减的只会在一个循环末尾出现 #include <bits/stdc++.h> using namespace std; #define rep( ...

  3. Petrozavodsk Winter Camp, Day 8, 2014, Second Trip

    给你一棵树,每次询问一个(a,b),问有多少有路径与a-b没有交集 找lca #include <bits/stdc++.h> using namespace std; #define r ...

  4. Petrozavodsk Winter Camp, Day 8, 2014, Mosaic

    给你三个数字a,b,c,让你用1-m的数字凑出来 结论:有2个1和2个2肯定凑不出来,然后就搜索 #include <bits/stdc++.h> using namespace std; ...

  5. Petrozavodsk Winter Camp, Day 8, 2014, Rectangle Count

    给一个n*m的格点图,问其中有多少个矩形? $ \sum_{x=1}^{nm} \sum_{ab=x} [a + b \leq n](n - a - b + 1)\sum_{cd=x} [c + d ...

  6. Petrozavodsk Winter Camp, Andrew, 2014, Dichromatic Trees

    条件: 1:每个红色节点的儿子都是黑色节点 2.每个叶子到根路径上的黑点数相等,等于某个常数,称作树的black height 求给定black height和节点数的符合条件的方案数 $black_ ...

  7. Petrozavodsk Winter Camp, Andrew, 2014, Bipartite Bicolored Graphs

    由i个点和j个点组成的二分图个数为 $3^{ij}$,减去不联通的部分得到得到由i,j个点组成的联通二分图个数 $g_{i,j} = 3_{ij} - \sum_{k=1}^i \sum_{l=0}^ ...

  8. 2018 Petrozavodsk Winter Camp, Yandex Cup

    A. Ability Draft solved by RDC 60min start, 148 min AC, 1Y 题意:两只 Dota 队伍,每队 \(n\) 个英雄,英雄一开始无技能,他们需要按 ...

  9. 2019 Petrozavodsk Winter Camp, Yandex Cup C. Diverse Singing 上下界网络流

    建图一共建四层 第一层为N个歌手 第二层为{pi,li} 第三层为{si,li} 第四层为M首歌 除了S和第一层与第三层与T之间的边为[1,INF] 其他边均为[0,1] #include<bi ...

随机推荐

  1. github爬虫100项目

    为了更好的巩固所学,在github上开始100爬虫项目,记录学习过程,也希望对他人的学习有帮助,目前还在持续更新中,有兴趣可以看看 地址: https://github.com/mapyJJJ/100 ...

  2. VS 通过局域网访问调试状态下的web应用程序

    1.点击vs的启动按钮 2.在任务栏找到IIS Express的图标,点击“显示所有应用程序” 3.如果只有本地localhost访问方式,点击对应应用程序的本地URL,就会显示对应的配置文件 4.点 ...

  3. 《ASP.NET Core In Action》读书笔记系列三 ASP.NET Core如何处理请求的?

    在本节中,您将看到ASP.NET Core应用程序如何运行的,从请求URL开始到页面呈现在浏览器中. 为此,您将看到 一个HTTP请求在Web服务器中是如何被处理的.ASP.NET Core如何扩展该 ...

  4. Wireshark使用介绍(一):Wireshark基本用法

    抓取报文: 下载和安装好Wireshark之后,启动Wireshark并且在接口列表中选择接口名,然后开始在此接口上抓包.例如,如果想要在无线网络上抓取流量,点击无线接口.点击Capture Opti ...

  5. TTL和COMS电平匹配以及电平转换的方法

    一.TTL TTL集成电路的主要型式为晶体管-晶体管逻辑门(transistor-transistor logic gate),TTL大部分都采用5V电源.1.输出高电平Uoh和输出低电平UolUoh ...

  6. Go语言代码规范指导

    本规范旨在为日常Go项目开发提供一个代码的规范指导,方便团队形成一个统一的代码风格,提高代码的可读性,规范性和统一性.本规范将从命名规范,注释规范,代码风格和 Go 语言提供的常用的工具这几个方面做一 ...

  7. ROS之坑

    我使用ROS建图的时候,用的是Kinect的深度信息转换成laser scan,Rviz仿真环境调用出laser scan信息的时候显示如下错误: Transform [sender=unknown_ ...

  8. docker介绍

    一.docker的定义 docker是一个平台,开发人员进行docker应用的开发和系统管理人员对docker应用部署和管理. 二.docker与Virtual Machine的区别 三.docker ...

  9. minSdkVersion

    10   It is indeed possible to increase minSdkVersion, but it took me way too much time to find it ou ...

  10. Insert 导致死锁的两种情况

    官档原文,懒得翻译了 https://dev.mysql.com/doc/refman/5.7/en/innodb-locks-set.html INSERT sets an exclusive lo ...