$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. c#进阶之泛型

    好久没用写博了,感觉工作的越久就越发的懒了,啦啦啦!德玛西亚! 感觉最近食欲不正,便想写写组织下自己的学习路程: 泛型,可能很多朋友在学习这个东西的时候都源于面向对象,当然我也不例外:从一个实体继承另 ...

  3. 《linux 必读》

    1. linux 内核设计与实现 2. 深入理解 linux 内核

  4. arcgis for js 之 获取两点之间的距离

    换了新公司,接触新行业,半路出家,看着别人的代码,看着api慢慢理解. 需求如下:已知两点坐标求距离. 思路,没有,站在同事的肩膀上踩路子,给的这个链接 https://developers.arcg ...

  5. liunx驱动----点亮LED

    自动挂接根文件系统(直接从NFS启动) 修改uboot命令行 把 bootargs=noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0 ...

  6. 在 Azure 上部署 Kubernetes 集群

    在实验.演示的时候,或者是生产过程中,我经常会需要运行一些 Docker 负载.虽然这在本地计算机上十分容易,但是当你要在云端运行的时候就有点困难了.相比于本地运行,在云端运行真的太复杂了.我尝试了几 ...

  7. appium+夜神+python3 环境配置

    先感慨一下真的心累啊,踩了好多坑,断断续续四天终于把环境彻底搭建完了,由于之前看的网上的帖子都不是很全而且还带坑,决定自己写一篇综述,作为笔记. 一,首先是安装需要的环境: 需要用到的软件: 1. j ...

  8. 安卓抓包https

    https://blog.csdn.net/yichengace/article/details/80167878

  9. Navicat Premium for Mac完美破解

    前因:系统升级Mojave10.14.4,没升级成功,也可能是误删了系统下的private文件夹下的东西,导致内核崩溃.    自己鼓捣了下,恢复系统不成功,去苹果售后问了下,重装系统399,保留资料 ...

  10. Tomcat在Window控制台下启动时乱码的两种解决办法

    在命令提示符中启动Tomcat时,日志窗口出现乱码: 乱码的原因肯定是日志解码错误引起的,因此就有一系列问题: 1.这个窗口的文本编码是什么? 窗口的文本编码查看:右击窗口>选项 可以看到窗口的 ...