[NC207040]丢手绢

简介: [NC207040]丢手绢

[NC207040]丢手绢 这道题是牛客上的一道题,这道题看似简单,但是坑点不少,好了,我们一起来看看题意吧:

题目描述

“丢~丢~丢手绢,轻轻地放在小朋友的后面,大家不要告诉她,快点快点抓住她,快点快点抓住她。”

牛客幼儿园的小朋友们围成了一个圆圈准备玩丢手绢的游戏,但是小朋友们太小了,不能围成一个均匀的圆圈,即每个小朋友的间隔可能会不一致。为了大家能够愉快的玩耍,我们需要知道离得最远的两个小朋友离得有多远(如果太远的话牛老师就要来帮忙调整队形啦!)。

因为是玩丢手绢,所以小朋友只能沿着圆圈外围跑,所以我们定义两个小朋友的距离为沿着圆圈顺时针走或者逆时针走的最近距离。

输入描述

第一行一个整数N,表示有N个小朋友玩丢手绢的游戏。

接下来的第2到第n行,第i行有一个整数,表示第i-1个小朋友顺时针到第i个小朋友的距离。

最后一行是第N个小朋友顺时针到第一个小朋友的距离。

输出描述

输出一个整数,为离得最远的两个小朋友的距离。

示例1

输入

3

1

2

3

输出

3

题目链接: [NC207040]丢手绢

思路:

这道题也不能直接暴力,我们需要用双指针算法进行优化,具体的我们来看看代码吧!

我们来看看成功AC的代码吧:

#include<bits/stdc++.h>
using namespace std;
int a[100010];
int n;
int ans;
int main(){
    cin>>n;
    int r=0;
    int su=0;
    for(int i=1;i<=n;i++) cin>>a[i],su+=a[i];
    int to = su/2;
    int x=0;
    for(int i=1;i<=n;i++){
        while(x<to){
            r++;
            x+=a[r%(n+1)];//这里要记住取余,可以回忆下循环队列
        }
        ans=max(ans,min(x,su-x));
        x-=a[i];
    }
    cout<<ans;
    return 0;
}


相关文章
|
6月前
|
XML 测试技术 Linux
技术笔记:sipp重放rtp数据测试FreeSWITCH
技术笔记:sipp重放rtp数据测试FreeSWITCH
|
监控 网络协议 应用服务中间件
动图图解!收到RST,就一定会断开TCP连接吗?
动图图解!收到RST,就一定会断开TCP连接吗?
640 0
|
运维 网络安全
巧用 nc 命令传输文件
今天在业务上云的时候,遇到了些问题。最终发现问题的根源不好排查,于是——把生产环境的全量配置文件,还有日志全量打包下载到开发机器分析!生产和开发机内网不通,都是走公网传输,但是速度特别慢……
205 3
|
缓存 监控 网络协议
数据什么会走丢了呢?
数据什么会走丢了呢?
227 0
数据什么会走丢了呢?
|
传感器 人机交互
STM32:串口收发HEX数据包理论篇(内含:1.实验现象+2.文本数据包/HEX数据包+ 3.文本数据包接收/HEX数据包接收)
STM32:串口收发HEX数据包理论篇(内含:1.实验现象+2.文本数据包/HEX数据包+ 3.文本数据包接收/HEX数据包接收)
705 0
STM32:串口收发HEX数据包理论篇(内含:1.实验现象+2.文本数据包/HEX数据包+ 3.文本数据包接收/HEX数据包接收)
|
网络协议 Linux 数据安全/隐私保护
Linux命令ping,nc的学习
今天看了下《Linux大棚命令百篇》网络和系统篇,发现了几个很不错的命令,我是看着目录然后根据自己的需要选了3个命令,没想到3个命令都让人眼前一亮,刷新了我原本的认知。 首先第一个命令还是老生常谈的ping 传统的ping就是下面的样子,这个也是我们熟悉的ping # ping 10.
1334 0
expect+scp传输文件发现文件丢失
背景 使用expect+scp去跨机器传输文件,(别问我为什么,因为公司的测试机器都是通过堡垒机的,无法绕开堡垒机,只能暂时使用这个方法了),结果发现从A传递到B的tar.gz文件大小不一致了的,当时心里MMP了   步骤 1.
1846 0
|
网络协议
三次握手的第三个ACK包丢了,会发生什么?
转载自三次握手的第三个ACK包丢了,TCP的处理方式 三次握手的第三个ACK包丢了,客户端认为连接建立,写数据时,会触发RST。
1284 0
|
网络协议 数据库
[20171204]nc快速判断端口是否打开2.txt
[20171204]nc快速判断端口是否打开2.txt --//前几天写了一篇通过nc快速判断打开那些端口,链接如下: http://blog.itpub.net/267265/viewspace-2148121/ --//如果要判断一定的范围,可以执行如下: $ echo a | nc -w 1 -n -v  192.
1053 0