参考:https://blog.csdn.net/zqh_wz/article/details/52953516

妙啊

看成分段问题,因为火车只能一批一批的走(易证= =)设f[i]为到i为止的车都走完来回了,转移显然是

\[f[i]=min{max(f[j]+i-j-1,a[i])+i-j-1+2*s}
\]

然后题解说这个j的取值是单调的,所以单增维护就行了(但是不会证单调)

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=1000005;
int n,s;
long long f[N],a[N];
int read()
{
int r=0,f=1;
char p=getchar();
while(p>'9'||p<'0')
{
if(p=='-')
f=-1;
p=getchar();
}
while(p>='0'&&p<='9')
{
r=r*10+p-48;
p=getchar();
}
return r*f;
}
int main()
{
n=read(),s=read();
for(int i=1;i<=n;i++)
a[i]=read(),f[i]=1e18;
sort(a+1,a+1+n);
for(int i=2;i<=n;i++)
a[i]=max(a[i],a[i-1]+1);
int j=0;
for(int i=1;i<=n;i++,j--)
while(j<i&&max(f[j]+i-j-1,a[i])+i-j-1+2*s<f[i])
f[i]=max(f[j]+i-j-1,a[i])+i-j-1+2*s,j++;
printf("%lld\n",f[n]);
return 0;
}

bzoj 3830: [Poi2014]Freight【dp】的更多相关文章

  1. [BZOJ 1025] [SCOI2009] 游戏 【DP】

    题目链接:BZOJ - 1025 题目分析 显然的是,题目所要求的是所有置换的每个循环节长度最小公倍数的可能的种类数. 一个置换,可以看成是一个有向图,每个点的出度和入度都是1,这样整个图就是由若干个 ...

  2. bzoj 4247: 挂饰【dp】

    bzoj上访问负下标会跑到奇怪的地方-- 其实可以滚动数组优化,但是我看能过就懒得改了 设f[i][j]为已经算了前i个挂饰,当前有j个空的钩子,转移就是f[i][j]=max(f[i-1][j],f ...

  3. bzoj 4606: [Apio2008]DNA【dp】

    写题五分钟读题两小时系列-- 看懂题的话不算难,然而我去看了大佬的blog才看懂题-- 题目大意是:一个原字符串,其中有一种通配符,合法串的定义是这个串(不含通配符))可以匹配原串并且这个串最多分成k ...

  4. BZOJ 3039: 玉蟾宫【dp】

    Description 有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地.这片土地被分成N*M个格子,每个格子里写着'R'或者' ...

  5. bzoj 4584: [Apio2016]赛艇【dp】

    参考:https://www.cnblogs.com/lcf-2000/p/6809085.html 设f[i][j][k]为第i个学校派出的赛艇数量在区间j内,并且区间j内共有k个学校的方案数 把数 ...

  6. Kattis - honey【DP】

    Kattis - honey[DP] 题意 有一只蜜蜂,在它的蜂房当中,蜂房是正六边形的,然后它要出去,但是它只能走N步,第N步的时候要回到起点,给出N, 求方案总数 思路 用DP 因为N == 14 ...

  7. HDOJ 1423 Greatest Common Increasing Subsequence 【DP】【最长公共上升子序列】

    HDOJ 1423 Greatest Common Increasing Subsequence [DP][最长公共上升子序列] Time Limit: 2000/1000 MS (Java/Othe ...

  8. HDOJ 1501 Zipper 【DP】【DFS+剪枝】

    HDOJ 1501 Zipper [DP][DFS+剪枝] Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Ja ...

  9. HDOJ 1257 最少拦截系统 【DP】

    HDOJ 1257 最少拦截系统 [DP] Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...

随机推荐

  1. Exception: Could not bind to 0.0.0.0:8080 after trying for 30 seconds

    swift@vincent-virtual-machine /etc/swift $ sudo swift-init main restart Signal proxy-server pid: sig ...

  2. hdu 3624 City Planning(暴力,也可扫描线)

    City Planning Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) To ...

  3. php 获取TZ时间格式

    php将时间格式化成T Z的方法 gmdate("c") 这个函数的用法,学会了吧!!! <?php var_dump(gmdate("c")); ini ...

  4. XP 系统如何安装.NET Framework4.0

    1 运行CMD,然后输入命令net stop WuAuServ   2 打开C盘的Windows目录,然后找到SoftwareDistribution文件夹改名为SDold.   3 在CMD窗口中输 ...

  5. 题目1011:最大连续子序列 O(n)

    题目大意:给出一系列的数字.要求你输出这些数字的最大连续和,并输出构成这个最大连续和的第一个数和最后一个数 解题思路:用一个变量维护最大连续和 假设当前这个变量小于0的话,就表示这个变量仅仅会拉低连续 ...

  6. 解决UnicodeDecodeError: 'ascii' codec can't decode byte 0xe7 in position 12: ordinal not in range(128)的编码问题

    当我在运行一个基于scrapy的爬虫时出现UnicodeDecodeError: 'ascii' codec can't decode byte 0xe7 in position 12: ordina ...

  7. Yii2 mongodb 扩展的where的条件增加大于 小于号

    1. mongodb的where中有比較丰富的 条件.例如以下: static $builders = [ 'NOT' => 'buildNotCondition', 'AND' => ' ...

  8. [转] logback logback.xml常用配置详解(一)<configuration> and <logger>

    转载文章:原文出处:http://aub.iteye.com/blog/1101260 详细整理了logback常用配置, 不是官网手册的翻译版,而是使用总结,旨在更快更透彻的理解其配置 根节点< ...

  9. Class.forName() 详解

    主要功能 Class.forName(xxx.xx.xx)返回的是一个类 Class.forName(xxx.xx.xx)的作用是要求JVM查找并加载指定的类, 也就是说JVM会执行该类的静态代码段 ...

  10. Datatables 1.10.x在命名上与1.9.x

    1.10.x与1.9.x参数名对照表 Datatables 1.10.x在命名上与1.9.x的有区别,新版的使用的是驼峰的命名规则,而之前的是采用匈牙利命名规则 当然,这些变化都是向下兼容的,你可以继 ...