[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;
}


相关文章
|
9月前
NC50528 滑动窗口
NC50528 滑动窗口
|
11月前
|
运维 网络安全
巧用 nc 命令传输文件
今天在业务上云的时候,遇到了些问题。最终发现问题的根源不好排查,于是——把生产环境的全量配置文件,还有日志全量打包下载到开发机器分析!生产和开发机内网不通,都是走公网传输,但是速度特别慢……
160 3
文件传输粘包问题(LinuxC)
文件传输粘包问题(LinuxC)
37 0
|
负载均衡 应用服务中间件 Linux
只能使用UDP:514端口接收Syslog日志的两种解决方法
只能使用UDP:514端口接收Syslog日志的两种解决方法
2532 0
只能使用UDP:514端口接收Syslog日志的两种解决方法
|
网络协议 算法
TCP/IP 校验和简析
TCP/IP 校验和简析
551 0
|
网络协议 JavaScript
TCP请求发送和接收,如果接收端终止,发送端继续发送会出什么错
TCP请求发送和接收,如果接收端终止,发送端继续发送会出什么错
146 0
TCP请求发送和接收,如果接收端终止,发送端继续发送会出什么错
expect+scp传输文件发现文件丢失
背景 使用expect+scp去跨机器传输文件,(别问我为什么,因为公司的测试机器都是通过堡垒机的,无法绕开堡垒机,只能暂时使用这个方法了),结果发现从A传递到B的tar.gz文件大小不一致了的,当时心里MMP了   步骤 1.
1771 0
|
网络协议
三次握手的第三个ACK包丢了,会发生什么?
转载自三次握手的第三个ACK包丢了,TCP的处理方式 三次握手的第三个ACK包丢了,客户端认为连接建立,写数据时,会触发RST。
1224 0