NC207040 丢手绢
作者:互联网
题目
- 原题地址:丢手绢
- 题目编号:NC207040
- 题目类型:尺取法
- 时间限制:C/C++ 1秒,其他语言2秒
- 空间限制:C/C++ 262144K,其他语言524288K
1.题目大意
- 丢手绢坐法,定义两个人的距离为顺时针距离和逆时针距离的最小者
- 求一圈人中的最大距离
2.题目分析
- 累加到临界值时(达到周长的一半),进行比较,对于每个结点都判断一下其最远距离是多少
- 通过尺取法来避免暴力运算情况下对每个结点的重复累加操作
3.题目代码
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
int all = 0;
int a[n];
for(int i=0;i<n;i++)
{
cin >> a[i];
all += a[i];
}
int sum = 0;
int ans = 0;
for(int i=0, j=0;i<n;i++)
{
while(sum*2<all)
sum += a[j++%n];
ans = max(ans, min(sum, all-sum));
sum -= a[i];
}
cout << ans << endl;
}
标签:手绢,题目,int,距离,C++,NC207040 来源: https://www.cnblogs.com/zhangyi101/p/16444765.html