Hrbust2294修建传送门(尺取法)
修建传送门
Time Limit: 1000 MS Memory Limit: 32768 K
Total Submit: 76(18 users) Total Accepted: 19(16 users) Rating: Special Judge: No
Description
做为长城上的卫士,影踪派一直守在螳螂高原上防止螳螂人卡拉克西的入侵。影踪派的长城可以近似看做是一条直线上依次编号为1~N的N个基地组成,编号相邻的两个基地之间由长城相连接,而影踪派掌门祝踏岚所在的影踪禅院位于编号为1的基地。祝踏岚发现,每次螳螂人只会选择长城上的一个基地进行猛烈的攻击,所以,祝踏岚每次都要从影踪禅院赶到被攻击的基地亲临前线指挥战斗。但是,在长城上移动是很耗时的,为了能更快的赶到任何一个可能被攻击的基地,祝踏岚决定修建一对传送门。一对传送门由两个入口组成,它能实现在两个入口间的瞬间转移。出于安全考虑,这两个入口一定要建造在基地上。祝踏岚想选出两个合适的基地建造这一对传送门,使得他从影踪禅院赶到任何一个基地所需要的移动距离最远的那个最短。(每次祝踏岚都会选择采用最短的方式前往每一个基地)。你能帮助他么?
Input
第一行为一个正整数T,表示测试数据组数。
每组测试数据第一行为一个整数N(1 <= N <= 100000),第二行包含N-1个正整数,其中第i个数表示编号为i的基地与编号为i+1的基地之间的长城长度。此长度不会超过2147483647.
Output
对每组测试数据输出一行,仅含一个整数,表示按照最优方案建造完虫洞后,祝踏岚需要从基地1赶到的移动距离最远的基地的移动距离。
Sample Input
2
3
1 20
6
1 2 3 4 5
Sample Output
1
5
Source
2016级新生程序设计全国邀请赛
题解:首先很容易想到需要把一个传送阵建立在1位置。然后我们枚举另一个传送阵的位置,同时记录答案。又因为要求的是每次的最远距离。这个最远距离的目的地只有两种情况。一:两个传送门的中的某一点。二:最后一个点。所以在枚举传送阵(设为i)的同时,我们需要枚举这个”点”(设为l),又因为他会采用最短的方式去每一个点。我们硬性要求dis[1][l]小于dis[l][i]。则我们需要再比较dis[1][l]与dis[l+1][i](因为did[1][l]小于dis[l][i],所以没法确定dis[1][l],dis[l+1][i]的大小)。维和过程中的最大值和结果最小值。
代码:
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <algorithm>
#include <string.h>
#define ll long long
using namespace std;
ll dp[110000];
ll a;
int main()
{int t,n;scanf("%d",&t);while(t--){scanf("%d",&n);memset(dp,0,sizeof(dp));for(int i=1;i<n;i++){scanf("%lld",&a);dp[i]=dp[i-1]+a;}ll ans=1e15;int l=1;for(int i=2;i<=n;i++){ll sum=0;while(l<i&&dp[i-1]-dp[l]>dp[l])l++;//这里维护的是dp[i-1]-dp[l-1]与dp[i-1]的关系。因为此时的“l”已经满足题意。我们想知道”l+1“是否满足sum=max(dp[l-1],dp[i-1]-dp[l]);sum=max(sum,dp[n-1]-dp[i-1]);ans=min(ans,sum);}printf("%lld\n",ans);}
}
Hrbust2294修建传送门(尺取法)相关推荐
- 16哈理工新生赛 B 修建传送门 (双指针)
题目链接:点击打开链接 修建传送门 Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 104(29 users) Total Accept ...
- 尺取法 POJ 3601 Subsequence
题目传送门 1 /* 2 题意:求连续子序列的和不小于s的长度的最小值 3 尺取法:对数组保存一组下标(起点,终点),使用两端点得到答案 4 1. 记录前i项的总和,求[i, p)长度的最小值,用二分 ...
- 尺取法 POJ 3320 Jessica's Reading Problem
题目传送门 1 /* 2 尺取法:先求出不同知识点的总个数tot,然后以获得知识点的个数作为界限, 更新最小值 3 */ 4 #include <cstdio> 5 #include &l ...
- P6058 二分 + Tarjan + 尺取法
题意 传送门 P6058 [加油武汉]体温调查 题解 考虑访问一整个区间 [s,t][s,t][s,t] 的过程.首先,从树根出发走到节点 sss,对于区间的相邻两点 u,vu,vu,v,其路径为 u ...
- P1099 树的直径 DFS + 二分 / 尺取法
题意 传送门 P1099 树网的核 在任意一条直径上求出的最小偏心距都相等. 树上只有一条直径时显然成立.当树有多条直径,它们必定相交,且中点汇聚于同一处,那么中心附近树的各条直径的重叠部分是相同的, ...
- CF660C Hard Process(尺取法)
整理的算法模板合集: ACM模板 尺取法 题目中要我们求最多改变k次后连续的1的最长长度.那么转换一下,不就是求至多包含k个0的子串的最长长度吗? 直接套用尺取法的思想,维护两端点,一旦0的个数超过k ...
- 【常用技巧精选】尺取法
整理的算法模板合集: ACM模板 目录 1.反向扫描 1 找指定和的整数对 A.UVA1121 Subsequence B.POJ 3320 Jessica's Reading Problem C.l ...
- ACM—各种模拟 总结(字符串,尺取法,数学问题)习题汇总
目录 一.字符串模拟 二. 高精度计算 1. 回文数(高精度,进制转换) 三.数学问题模拟 四.尺取法(双指针法) 1.都说小镇的切糕贵 (尺取法,字符串) umi和弓道 五.奇怪的模拟 x的位数=l ...
- poj2739(尺取法+质数筛)
题意:给你一个数,问这个数能否等于一系列连续的质数的和: 解题思路:质数筛打出质数表:然后就是尺取法解决: 代码: #include<iostream> #include<algor ...
最新文章
- java具有自动无用内存回收_Java语言程序设计(一)试卷及答案解释
- php 数组值的交集,PHP 数组交集与差集
- Django--form验证及错误处理
- java反射机制的简单使用和优缺点
- filter滤镜实现img图片的CSS蒙版效果、模糊效果
- 50 - 算法- LeetCode 104 -二叉树
- 【电力负荷预测】基于matlab量子粒子群算法优化LSTM短期电力负荷预测【含Matlab源码 1560期】
- [Apio2012]dispatching 左偏树
- IIS6.0相关漏洞复现
- php获取银行logo,依据银行卡号获取银行信息php代码
- 09-网格划分质量查看
- 关于1stopt的补充说明
- Modelica运算符
- 动态人脸检测(脸数可调)
- 什么是Cat.1,Cat.1和4G之间的区别
- 华为员工工作生活及待遇全面揭秘
- 如何取消计算机上的公式,评估公式并从单元格中删除公式(Evaluate formula and remove formula from cell)...
- 第 4 篇、Linux操作基础 | 计算机组成
- 三阶魔方CFOP还原方法图解
- 华为刀片服务器虚拟化方案,华为刀片服务器配置报价指导e9000.pptx
热门文章
- word/excel 里的表格如何到PS里使用
- chrome浏览器去除蓝色边框和黄色背景色
- 我的世界正版服务器客户端,我的世界1.11.2
- Vue - 前段框架
- Character Swap (Hard Version)
- MATLAB中关于复矩阵的操作,新手易错
- android广告页白屏_微信官方朋友圈广告营销技巧
- 【面试智力题】一楼到十楼的每层电梯门口都放着一颗钻石,钻石大小不一。你乘坐电梯从一楼到十楼,怎样拿到最大的一颗?
- c#基础知识学习——枚举、元组(四)
- 爬虫,爬取猫眼电影Top100的电影名与评分