丢手绢

丢手绢

https://ac.nowcoder.com/acm/problem/207040

//核心:尺取法
//思路见注释;
#include<iostream>
using namespace std;
const int N=10000006;
int a[N];
int main(){
int n,sum=0;
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
sum+=a[i];
}//计算sum方便后面之间除二找最小的最大距离;
int right=0,tt=0,ans;//right从第一个小朋友开始,当第一个与某第right个小朋友之间的距离大于等于sum/2时既为第一个点;
for(int i=0;i<n;i++){//i为左端点,right为右端点,tt则为两者之间的距离,
while(tt<sum/2){
tt+=a[right%n];//right%n的目的:因为小朋友是绕圈的,当超过第n个小朋友之后就又从第一个小朋友开始;
right++;
}
ans=max(ans,min(tt,sum-tt));//先求两个小朋友之间的最小的最大距离,再在循环中求所有小朋友之间的距离的最大距离;
tt-=a[i];//i往右移了所以两者之间的距离得先减去a[i];
}
cout<<ans<<endl;
return 0;
}
//笱蒻的思路,有错的地方敬请指正。 </iostream>

全部评论
AC不了啊(啊啊啊啊啊啊啊!!!!!!)
点赞 回复 分享
发布于 2024-04-21 18:27 浙江
因为他们是围城一个圈,那么离这个小朋友最远距离就一定是周长一半的两边
点赞 回复 分享
发布于 2022-01-15 11:03
我是菜鸡,请问这个为啥是大于等于sum的一半啊,比sum一半小的点为啥可以不考虑
点赞 回复 分享
发布于 2022-01-15 09:49

相关推荐

不愿透露姓名的神秘牛友
05-01 13:13
ecece:这么明目张胆虚报就业率啊
点赞 评论 收藏
分享
野猪不是猪🐗:现在的环境就是这样,供远大于求。 以前卡学历,现在最高学历不够卡了,还要卡第一学历。 还是不够筛,于是还要求得有实习、不能有gap等等... 可能这个岗位总共就一个hc,筛到最后还是有十几个人满足这些要求。他们都非常优秀,各方面都很棒。 那没办法了,看那个顺眼选哪个呗。 很残酷,也很现实
点赞 评论 收藏
分享
评论
5
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务