[POI2014]Freight
题目大意:
有两个城镇$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相关推荐
- 洛谷P3572 [POI2014]PTA-Little Bird
P3572 [POI2014]PTA-Little Bird 题目描述 In the Byteotian Line Forest there are nn trees in a row. On top ...
- SAP MM MIGO界面上的Freight标签页
SAP MM MIGO界面上的Freight标签页 事务代码MIGO针对采购订单收货的时候,能出现Freight Tab. 这是笔者玩SAP系统十多年来第一次知道的,就在今天,就在刚刚.自然引起了笔者 ...
- P3572 [POI2014]PTA-Little Bird
P3572 [POI2014]PTA-Little Bird 一只鸟从1跳到n.从1开始,跳到比当前矮的不消耗体力,否则消耗一点体力,每次询问有一个步伐限制k,求每次最少耗费多少体力 很简短的题目哼. ...
- [BZOJ3832][Poi2014]Rally
[BZOJ3832][Poi2014]Rally 试题描述 An annual bicycle rally will soon begin in Byteburg. The bikers of Byt ...
- 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 ...
- P3564 [POI2014]BAR-Salad Bar(ST表 + 二分)
P3564 [POI2014]BAR-Salad Bar 给定一个长度为nnn的数组,里面元素只有111跟−1-1−1,问选出一个长度为lenlenlen的区间使得,这个区间的前缀和时刻大于零,后缀和 ...
- bzoj4543. [POI2014]Hotel加强版
bzoj4543. [POI2014]Hotel加强版 题面描述 Solution 先看n≤5e3n \leq 5e3n≤5e3怎么做. 考虑树形dpdpdp. 设f[i][j]f[i][j]f[i] ...
- P3567 [POI2014]KUR-Couriers
P3567 [POI2014]KUR-Couriers 题意: 给一个长度为 n 的正整数序列 a.共有 m 组询问,每次询问一个区间 [l,r] ,是否存在一个数在 [l,r]中出现的次数严格大于一 ...
- [骗分技巧——随机化Ⅱ] [Poi2014]Couriers,CodeChef - TKCONVEX
文章目录 [Poi2014]Couriers problem solution code CodeChef - TKCONVEX problem solution code 随机算法的典型套路:枚举太 ...
- P3565 [POI2014]HOT-Hotels(树形dp+长链剖分)
P3565 [POI2014]HOT-Hotels 参考题解 题目大意: 给定一棵树,在树上选 3 个点,要求两两距离相等,求方案数. 三个点树上两两距离为d存在下面两种情况 某个点三个子树(保证该点 ...
最新文章
- android实现语音合成
- 以Binder视角来看Service启动
- (luogu4180) [Beijing2010组队]次小生成树Tree
- SAP CRM事务码COMMPR01无法搜索Individual Object
- 苹果又遭集体诉讼,网友拍手:干得漂亮......
- 企业主要培养三大方向的思考习惯
- 【网络安全入门大总结】—Java语言中常用的渗透漏洞大汇总
- Spring Boot中初始化资源的几种方式
- mysql 表的存储类型_MySQL的表类型和存储引擎
- HTML+CSS+Bootstrap+ECMAScript+DOM
- namecheap注册域名优惠码
- 十月百度,阿里巴巴,迅雷搜狗最新面试十一题
- Intel的Barefoot与AMD的Pensando技术
- 俄罗斯方块是java_俄罗斯方块(java版)
- 我对平均值,期望,大数定律之间的联系的理解
- ios 结构体跟枚举变量的区别_IOS结构体、联合、枚举
- ipad mini 4:ipad is disabled connect to iTunes
- 软件实施工程师常问数据库问题
- 迪博·中国上市公司内部控制指数(2000-2020年)
- 关于我在中华读书报发表的文章
热门文章
- lintcode-medium-Longest Common Substring
- [删括号][判断可行性的dp]
- 2014-2015 ACM-ICPC, NEERC, Eastern Subregional Contest Problem H. Pair: normal and paranormal
- 【数据库】Mean web开发 05-Linux上配置MongoDB自动启动及远程连接
- inline,block 和 inline-block 的区别
- ZooKeeper(3.4.5) - 原生 API 的简单示例
- 2014.7.8模拟赛【笨笨当粉刷匠】|bzoj1296 [SCOI]粉刷匠
- Ubuntu 安装 wxlua
- (转)如何真正实现由文档驱动的API设计?
- 小程序开发基础-swiper 滑块视图容器