16哈理工新生赛 B 修建传送门 (双指针)
题目链接:点击打开链接
修建传送门 |
||||||
|
||||||
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赶到任何一个基地所需要的移动距离最远的那个最短.可以二分答案啊,也可以用双指针。预处理前缀和,即从1到每个点的距离。然后尺取法去枚举传送阵,第一个传送阵一定要放在1的位置上,否则最小的最大长度就是就会多了(1 -> 左边的传送阵)的距离. 所以dp[i]为前i个距离的前缀和。然后转移方程:
dis = max( max( dp[ l - 1], dp[ i - 1 ] - dp[ l ] ), dp[ n-1 ] - dp[ i-1]); 表示第二个传送阵到两头的最大距离。
然后求最大的最小:ans =min( ans, dis );就可以了。
AC代码:
#include<cstdio>
#include<iostream>
#include<map>
#include<algorithm>
#include<cstring>
typedef long long ll;
using namespace std;
ll dp[110000];
int main()
{int t;ll n;cin>>t;while(t--){cin>>n;memset(dp,0,sizeof(dp));for(int i=1;i<n;i++){ll a;cin>>a;dp[i]=dp[i-1]+a;}ll l=1;ll ans=1e15;ll dis=0;//双指针 for(int i=2;i<=n;i++) //枚举传送阵 {while(i > l && dp[i-1] - dp[l] > dp[l]){l++; }dis=max( max( dp[l-1], dp[i-1]-dp[l] ), dp[n-1]-dp[i-1]);ans=min(ans,dis);}cout<<ans<<endl;}return 0;
}
16哈理工新生赛 B 修建传送门 (双指针)相关推荐
- 16哈理工新生赛 H 下雪啦 (哈希表)
题目链接:点击打开链接 下雪啦 Time Limit: 2500 MS Memory Limit: 32768 K Total Submit: 184(32 users) Total Accepted ...
- 16哈理工新生赛 C 方方正正 (证明题)
方方正正 Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 87(24 users) Total Accepted: 19(15 user ...
- 小乐乐与二段数(2019哈理工新生赛第20题)
链接:2019哈理工新生赛题解 2019哈理工新生赛第20题 T题: 链接:https://ac.nowcoder.com/acm/contest/1877/T 来源:牛客网 题目描述 小乐乐从老师口 ...
- 2018大连理工新生赛解题报告
Problem A: 打ACM真开心啊! 思路:假装没有这一题 roblem B: Zeratul与翻转黑白棋 思路:皮这一下很开心=W=! Problem C: Type-B型时间芯片 思路:算一下 ...
- Hrbust2294修建传送门(尺取法)
修建传送门 Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 76(18 users) Total Accepted: 19(16 use ...
- [SUCTF2018]babyre [ACTF新生赛2020]fungame
文章目录 [SUCTF2018]babyre 惯用思维 常人思维 GAMEOVER [ACTF新生赛2020]fungame int __cdecl sub_401340(int a1) int __ ...
- Hrbust 2294 修建传送门【思维】
修建传送门 Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 56(14 users) Total Accepted: 12(10 use ...
- TJUCTF新生赛-AI安全专栏write up
以下题目为我本次为天津大学ctf新生赛出的AI安全专栏中的所有题目,所有代码仅限学习交流,请勿用于非法活动或商业用途. 1. 签到题 非常简单的签到题,不过其可能会对于其他题目有帮助哦 本题只有如下一 ...
- BUU [ACTF新生赛2020]Universe_final_answer
[ACTF新生赛2020]Universe_final_answer 首先查壳, 64bit 无壳 ida64位打开 main() __int64 __fastcall main(int a1, ch ...
最新文章
- 基于SSM实现学籍管理系统
- C#获取网页中的验证码图片(转载)
- C++之static关键字
- 链路层基本问题 : 封装成帧、差错检测、流量控制
- 论文浅尝 | 面向自动分类归纳的端到端强化学习
- c++用类实现高斯消元法求解线性方程组的解_高斯消元
- sap系统搭建教程_SAP系统和微信集成的系列教程之十:如何在SAP C4C系统里直接回复消息给微信用户...
- rstudio 修改代码间距_如何在RStudio里修改R脚本的编码方式
- android4.2实现pwm,Android平台下AOA协议的PWM信号控制系统
- 金融计量学实验报告一
- 安卓基于图像识别和CNN做出一个通用的斗地主记牌器(一)
- 企业微信双开及三开的方法
- 求两个数的最小公倍数和最大公因数
- VsCode下通过Latex运行计算机学报的模板
- python中imag是什么意思_Python-在imag中查找主要/最常见的颜色
- 断句规则 Segmentation Rule
- 瘦手臂最快最有效的方法
- mdadm 创建md 删除md步骤
- prototype 原型
- 2022亚马逊云科re:Invent,打开行业新格局