25| 丢手绢

代码实现

cpp 复制代码
typedef long long ll;
const int N = 2e5 + 10; // 因为要拼接数组,所以长度翻倍
ll a[N], tmp, ret;
int main()
{
    int n; cin >> n;
    ll circ = 0;
    for (int i = 1; i <= n; i++) 
    {
        cin >> a[i];
        circ += a[i];
        a[i + n] = a[i]; // 拼接数组,处理环形
    }
    int l = 1;
    tmp = 0, ret = 0;
    for (int r = 1; r <= 2 * n; r++) // 遍历到2n
    {
        tmp += a[r];
        // 当当前和超过半周长时,从左边移出元素
        while (tmp > circ / 2)
        {
            tmp -= a[l];
            l++;
        }
        // 更新最大的最近距离
        ret = max(ret, tmp);
        // 防止窗口长度超过n(即绕回一圈以上)
        if (r - l + 1 > n)
        {
            tmp -= a[l];
            l++;
        }
    }
    cout << ret << endl;
}
cpp 复制代码
typedef long long ll;
const int N = 1e5 + 10;
ll a[N], tmp, ret;
int main()
{
	int n; cin >> n;
	ll circ = 0;
	for (int i = 1; i <= n; i++) 
	{
		cin >> a[i];
		circ += a[i];
	}
	int l = 1, r = 1;
	while (r <= n)
	{
		// 入窗口
		tmp += a[r];
		// 判断
		while (tmp * 2 > circ)
		{
			ret = max(ret, circ - tmp);
			// 出窗口
			tmp -= a[l];
			l++; 
		 } 
		 
		// 更新结果
		ret = max(ret, tmp); 
		r++;
	}
	cout << ret << endl;
 } 
相关推荐
辰海Coding2 小时前
MiniSpring框架学习笔记-解决循环依赖的简化IoC容器
笔记·学习
杜子不疼.2 小时前
【C++ AI 大模型接入 SDK】 - DeepSeek 模型接入(上)
开发语言·c++·chatgpt
晓梦林2 小时前
cp520靶场学习笔记
android·笔记·学习
石山代码3 小时前
C++ 内存分区 堆区
java·开发语言·c++
心中有国也有家3 小时前
cann-recipes-infer:昇腾 NPU 推理的“菜谱集合”
经验分享·笔记·学习·算法
玄米乌龙茶1233 小时前
LLM成长笔记(三):API 开发基础
笔记
Upsy-Daisy3 小时前
AI Agent 项目学习笔记(八):Tool Calling 工具调用机制总览
人工智能·笔记·学习
绝知此事3 小时前
【算法突围 01】线性结构与哈希表:后端开发的收纳术
java·数据结构·算法·面试·jdk·散列表
碧海银沙音频科技研究院3 小时前
通话AEC与语音识别AEC的软硬回采链路
深度学习·算法·语音识别
csdn_aspnet4 小时前
Python 算法快闪 LeetCode 编号 70 - 爬楼梯
python·算法·leetcode·职场和发展