题目大意:
  有两个城镇$A$和$B$,有$n(n\le10^6)$辆车从$A$地出发前往$B$再返回$A$地。两地之间的行驶时间为$s(s\le10^9)$,每辆车从$A$地出发的最早时间是$t_i(0\le t_1\le t_2\le\ldots\le t_n\le10^9)$。行驶过程中需要保证每辆车出发时间至少相差$1$,且每个时刻运行的车都是同一个方向,问所有车都返回$A$地至少需要多少时间?

思路:
  “行驶过程中需要保证每辆车出发时间至少相差$1$”相当于令$t_i=\max(t_i,t_{i-1}+1)$。
  “每个时刻运行的车都是同一个方向”说明我们只需要对这些车分批,一批往返结束后下一批开始往返(一批车留在$B$地,另一批从$A$地过来一定存在一种等价的方案使得第一批往返完成后第二批出发)。
  有了以上两个信息,不难得到状态转移方程$f_i=\min\{\max(t_i,f_j+i-j-1)+2s+i-j-1\}$。
  由于$f_j+i-j-1$是单调递增的,所以$\max(t_i,f_j+i-j-1)$中一定可以找到一个转折点$j$使得$j$的左边取到$t_i-i$,右边取到$f_j-j-1$。左边是定值因此$j$越大越好,右边相当于求区间$[j,i)$的最小值,用树状数组维护即可,时间复杂度$O(n\log n)$。已经能AC了。
  事实上,因为$f_i$的增长速度$\ge2i$,所以取最左边即转折点的一定更优,这样就可以省掉树状数组。考虑到转折点位置是单调递增的,因此只需要每次把上一次的转折点位置记录下来,累加到当前转折点即可。时间复杂度$O(n)$。

 1 #include<cstdio>
 2 #include<cctype>
 3 #include<climits>
 4 #include<algorithm>
 5 typedef long long int64;
 6 inline int getint() {
 7     register char ch;
 8     while(!isdigit(ch=getchar()));
 9     register int x=ch^'0';
10     while(isdigit(ch=getchar())) x=(((x<<2)+x)<<1)+(ch^'0');
11     return x;
12 }
13 const int N=1e6+1;
14 int t[N]={-1};
15 int64 f[N];
16 int main() {
17     const int n=getint(),s=getint();
18     for(register int i=1,j=1;i<=n;i++) {
19         f[i]=LLONG_MAX;
20         t[i]=std::max(getint(),t[i-1]+1);
21         for(j--;j<i&&std::max((int64)t[i],f[j]+i-j-1)+s*2+i-j-1<f[i];j++) {
22             f[i]=std::max((int64)t[i],f[j]+i-j-1)+s*2+i-j-1;
23         }
24     }
25     printf("%lld\n",f[n]);
26     return 0;
27 }

转载于:https://www.cnblogs.com/skylee03/p/8670100.html

[POI2014]Freight相关推荐

  1. 洛谷P3572 [POI2014]PTA-Little Bird

    P3572 [POI2014]PTA-Little Bird 题目描述 In the Byteotian Line Forest there are nn trees in a row. On top ...

  2. SAP MM MIGO界面上的Freight标签页

    SAP MM MIGO界面上的Freight标签页 事务代码MIGO针对采购订单收货的时候,能出现Freight Tab. 这是笔者玩SAP系统十多年来第一次知道的,就在今天,就在刚刚.自然引起了笔者 ...

  3. P3572 [POI2014]PTA-Little Bird

    P3572 [POI2014]PTA-Little Bird 一只鸟从1跳到n.从1开始,跳到比当前矮的不消耗体力,否则消耗一点体力,每次询问有一个步伐限制k,求每次最少耗费多少体力 很简短的题目哼. ...

  4. [BZOJ3832][Poi2014]Rally

    [BZOJ3832][Poi2014]Rally 试题描述 An annual bicycle rally will soon begin in Byteburg. The bikers of Byt ...

  5. BZOJ4543 POI2014 Hotel加强版 【长链剖分】【DP】*

    BZOJ4543 POI2014 Hotel加强版 Description 同OJ3522 数据范围:n<=100000 Sample Input 7 1 2 5 7 2 5 2 3 5 6 4 ...

  6. P3564 [POI2014]BAR-Salad Bar(ST表 + 二分)

    P3564 [POI2014]BAR-Salad Bar 给定一个长度为nnn的数组,里面元素只有111跟−1-1−1,问选出一个长度为lenlenlen的区间使得,这个区间的前缀和时刻大于零,后缀和 ...

  7. bzoj4543. [POI2014]Hotel加强版

    bzoj4543. [POI2014]Hotel加强版 题面描述 Solution 先看n≤5e3n \leq 5e3n≤5e3怎么做. 考虑树形dpdpdp. 设f[i][j]f[i][j]f[i] ...

  8. P3567 [POI2014]KUR-Couriers

    P3567 [POI2014]KUR-Couriers 题意: 给一个长度为 n 的正整数序列 a.共有 m 组询问,每次询问一个区间 [l,r] ,是否存在一个数在 [l,r]中出现的次数严格大于一 ...

  9. [骗分技巧——随机化Ⅱ] [Poi2014]Couriers,CodeChef - TKCONVEX

    文章目录 [Poi2014]Couriers problem solution code CodeChef - TKCONVEX problem solution code 随机算法的典型套路:枚举太 ...

  10. P3565 [POI2014]HOT-Hotels(树形dp+长链剖分)

    P3565 [POI2014]HOT-Hotels 参考题解 题目大意: 给定一棵树,在树上选 3 个点,要求两两距离相等,求方案数. 三个点树上两两距离为d存在下面两种情况 某个点三个子树(保证该点 ...

最新文章

  1. android实现语音合成
  2. 以Binder视角来看Service启动
  3. (luogu4180) [Beijing2010组队]次小生成树Tree
  4. SAP CRM事务码COMMPR01无法搜索Individual Object
  5. 苹果又遭集体诉讼,网友拍手:干得漂亮......
  6. 企业主要培养三大方向的思考习惯
  7. 【网络安全入门大总结】—Java语言中常用的渗透漏洞大汇总
  8. Spring Boot中初始化资源的几种方式
  9. mysql 表的存储类型_MySQL的表类型和存储引擎
  10. HTML+CSS+Bootstrap+ECMAScript+DOM
  11. namecheap注册域名优惠码
  12. 十月百度,阿里巴巴,迅雷搜狗最新面试十一题
  13. Intel的Barefoot与AMD的Pensando技术
  14. 俄罗斯方块是java_俄罗斯方块(java版)
  15. 我对平均值,期望,大数定律之间的联系的理解
  16. ios 结构体跟枚举变量的区别_IOS结构体、联合、枚举
  17. ipad mini 4:ipad is disabled connect to iTunes
  18. 软件实施工程师常问数据库问题
  19. 迪博·中国上市公司内部控制指数(2000-2020年)
  20. 关于我在中华读书报发表的文章

热门文章

  1. lintcode-medium-Longest Common Substring
  2. [删括号][判断可行性的dp]
  3. 2014-2015 ACM-ICPC, NEERC, Eastern Subregional Contest Problem H. Pair: normal and paranormal
  4. 【数据库】Mean web开发 05-Linux上配置MongoDB自动启动及远程连接
  5. inline,block 和 inline-block 的区别
  6. ZooKeeper(3.4.5) - 原生 API 的简单示例
  7. 2014.7.8模拟赛【笨笨当粉刷匠】|bzoj1296 [SCOI]粉刷匠
  8. Ubuntu 安装 wxlua
  9. (转)如何真正实现由文档驱动的API设计?
  10. 小程序开发基础-swiper 滑块视图容器