【枚举】CF1660 D

news2024/12/23 4:02:28

Problem - 1660D - Codeforces

题意:

思路:

思路巨简单,代码也wa了很多发才过,都是因为细节....

很显然,要根据0分段处理

对于每一段,枚举去掉左边段还是右边段,左边段是 l 到第一个负数,右边段是最后一个负数到 r,看哪个大

比较的话不需要把区间积算出来,比较区间2的个数即可

如果区间积本来就是正数,那么直接取一整段即可

Code:

#include <bits/stdc++.h>

using i64 = long long;

constexpr int N = 2e5 + 10;
constexpr int M = 2e5 + 10;

std::vector<std::array<int, 2> > V;

int pl = 1, pr = 1;
int a[N], pre[N], pre2[N];

int calc(int l, int r) {
    if(l == r && a[l] < 0) return -1e9;
    int cnt = pre[r] - pre[l - 1];
    if (cnt & 1) {
        int mx = 0, L = 0, R = 0;
        for (int i = l; i <= r; i ++) {
            if (a[i] < 0) {
                L = i;
                break;
            }
        }

        for (int i = r; i >= l; i --) {
            if (a[i] < 0) {
                R = i;
                break;
            }
        }

        if (pre2[r] - pre2[L + 1 - 1] > pre2[R - 1] - pre2[l - 1]) {
            pl = L + 1;
            pr = r;
        }else {
            pl = l;
            pr = R - 1;
        }
        mx = std::max(pre2[r] - pre2[L + 1 - 1], pre2[R - 1] - pre2[l - 1]);
        return mx;
    }else {
        pl = l, pr = r;
        return pre2[r] - pre2[l - 1];
    }
}
void solve() {
    V.clear();
    pl = 0, pr = 0;
    int n;
    std::cin >> n;

    for (int i = 0; i <= n + 5; i ++) {
        a[i] = pre[i] = pre2[i] = 0;
    }
    for (int i = 1; i <= n; i ++) {
        std::cin >> a[i];
    }

    if (n == 1) {
        if (a[1] > 0) {
            std::cout << "0 0" << "\n";
        }else {
            std::cout << "1 0" << "\n";
        }
        return;
    }
    for (int i = 1; i <= n; i ++) {
        pre[i] = pre[i - 1] + (a[i] < 0);
        pre2[i] = pre2[i - 1] + (abs(a[i]) == 2);
    }
    
    a[n + 1] = 0;
    int l = 1, r = 1;
    for (int i = 1; i <= n + 1; i ++) {
        if (a[i] == 0) {
            r = i - 1;
            if (l <= r) V.push_back({l, r});
            l = i + 1;
        }
    }

    int ans = -1e9, ansl = 0, ansr = 0;

    for (auto v : V) {
        if (ans < calc(v[0], v[1])) {
            ans = calc(v[0], v[1]);
            ansl = pl;
            ansr = pr;
        }
    }

    if (ansl == 0 && ansr == 0) std::cout << n << " " << 0 << "\n";
    else std::cout << ansl - 1 << " " << n - (ansr + 1) + 1 << "\n";
}
signed main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);

    int t = 1;
    std::cin >> t;
    while(t --) {
        solve();
    }
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/866415.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Blazor 简单组件(0):简单介绍

文章目录 前言说明环境安装 前言 Blazor 这个技术还是比较新&#xff0c;相关的UI组件还在完善&#xff0c;我这里提供一下我个人的组件开发。 说明 本UI组件是基于BootstrapBlazor(以下简称BB)开发。 BootstrapBlazor 文档 环境安装 C#小轮子&#xff1a;Visual Studio自…

Vue过滤器(时间戳转时间)

目录 过滤器 HTML写法&#xff1a; 定义过滤器: 定义全局过滤器&#xff1a; 过滤器串联&#xff1a; 带参数过滤器&#xff1a; 时间戳转时间 过滤器 官方地址&#xff1a;过滤器 — Vue.js (vuejs.org) 过滤器是指Vue.js支持在{{}}插值的尾部添加一个管道符“&#xff0…

【腾讯云 Cloud Studio 实战训练营】使用Cloud Studio构建Java、Python项目

文章目录 一、云IDE1、云IDE简介2、云IDE和云虚拟桌面区别 二、Cloud Studio 简介1、简介2、AI代码助手3、企业源代码安全 三、快速开始1、登录Cloud Studio2、新建工作空间3、代码空间 四、项目构建1、构建Java项目1.1 新建工作空间1.2 初始化项目1.3 初始化小案例1.4、测试Ja…

(贪心) 剑指 Offer 14- II. 剪绳子 II ——【Leetcode每日一题】

❓剑指 Offer 14- II. 剪绳子 II 难度&#xff1a;中等 给你一根长度为 n 的绳子&#xff0c;请把绳子剪成整数长度的 m 段&#xff08;m、n 都是整数&#xff0c;n > 1 并且 m>1 &#xff09;&#xff0c;每段绳子的长度记为 k[0],k[1]...k[m - 1] 。请问 k[0]*k[1]*.…

【云原生】Docker 详解(三):Docker 镜像管理基础

Docker 详解&#xff08;三&#xff09;&#xff1a;Docker 镜像管理基础 1.镜像的概念 镜像可以理解为应用程序的集装箱&#xff0c;而 Docker 用来装卸集装箱。 Docker 镜像含有启动容器所需要的文件系统及其内容&#xff0c;因此&#xff0c;其用于创建并启动容器。 Dock…

搭建Docker环境

目录 一、docker环境搭建 1、卸载旧版本docker 2、安装依赖和设置仓库 3、安装docker 4、启动并加入开机启动 5、验证是否安装成功 二、利用docker搭建nginx 1、拉取镜像 2、启动容器&#xff0c;部署nginx 一、docker环境搭建 1、卸载旧版本docker yum remove docke…

【Image captioning】ruotianluo/self-critical.pytorch之1—数据集的加载与使用

【Image captioning】ruotianluo/self-critical.pytorch之1—数据集的加载与使用 作者&#xff1a;安静到无声 个人主页 数据加载程序示意图 使用方法 示例代码 #%%from __future__ import absolute_import from __future__ import division from __future__ import print_…

Python(七十九)字符串的常用操作——字符串内容对齐操作的方法

❤️ 专栏简介&#xff1a;本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中&#xff0c;我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 &#xff1a;本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

间歇性和连续性静息态功能磁共振成像的异同

摘要 功能磁共振成像(fMRI) block设计实验通常包括呈现认知任务的ON-block和无认知任务的OFF-block。然而&#xff0c;ON-block之间的OFF-block也可以看作间歇性休息的标志&#xff0c;从而诱发短暂的静息状态。目前仍然不知道这种间歇期的大脑活动是否反映了与连续期相同的静…

阻塞队列_线程安全版本_生产消费者模型

前言 在前面PriorityQueue优先级队列_Y君的进化史的博客-CSDN博客&#xff0c;我们学习了优先级队列&#xff0c;但是发现&#xff0c;当一个线程将优先级队列使用完之后&#xff0c;会自动退出程序&#xff0c;如果此时我们想使其一直等待到下一个任务的录入&#xff0c;就需…

nodejs+vue+elementui学生档案信息管理系统_06bg9

利用计算机网络的便利&#xff0c;开发一套基于nodejs的大学生信息管理系统&#xff0c;将会给人们的生活带来更多的便利&#xff0c;而且在经济效益上&#xff0c;也会有很大的便利!这可以节省大量的时间和金钱。学生信息管理系统是学校不可缺少的一个环节&#xff0c;其内容直…

案例12 Spring MVC入门案例

网页输入http://localhost:8080/hello&#xff0c;浏览器展示“Hello Spring MVC”。 1. 创建项目 选择Maven快速构建web项目&#xff0c;项目名称为case12-springmvc01。 2.配置Maven依赖 <?xml version"1.0" encoding"UTF-8"?><project xm…

Hazel 引擎学习笔记

目录 Hazel 引擎学习笔记学习方法思考引擎结构创建工程程序入口点日志系统Premake\MD没有 cpp 文件的项目会出错include 到某个库就要包含这个库的路径&#xff0c;注意头文件展开 事件系统 获取和利用派生类信息预编译头文件抽象窗口类和 GLFWgit submodule addpremake 脚本禁…

Labview控制APx(Audio Precision)进行测试测量(七)

处理集群控制子集 大多数用户不会想要设置所有的控制包括在一个大的控制集群&#xff0c;如水平和增益配置控制。例如&#xff0c;假设您只在 APx 中使用模拟不平衡输出连接器&#xff0c;而您想要做的就是控制发电机的电平和频率。在这种情况下&#xff0c;水平和增益配置集群…

【Redis】Redis内存过期策略和内存淘汰策略

【Redis】Redis内存过期策略和内存淘汰策略 文章目录 【Redis】Redis内存过期策略和内存淘汰策略1. 过期策略1.1 惰性删除1.2 周期删除1.2.1 SLOW模式1.2.2 FAST模式 2. 淘汰策略 1. 过期策略 Redis本身是一个典型的key-value内存存储数据库&#xff0c;因此所有的key、value都…

HarmonyOS SDK开放能力,服务鸿蒙生态建设,打造优质应用体验

华为开发者大会2023&#xff08;HDC.Together&#xff09;于8月4日至6日在东莞松山湖举行&#xff0c;在HarmonyOS端云开放能力技术分论坛上&#xff0c;华为为广大开发者们介绍了HarmonyOS SDK开放能力在基础开发架构、功能特性等方面的变化之处&#xff0c;通过将常见的通用能…

PAT1044 Shopping in Mars

个人学习记录&#xff0c;代码难免不尽人意。 做了这么多题难得本题不看答案一遍过&#xff0c;很是激动。 Shopping in Mars is quite a different experience. The Mars people pay by chained diamonds. Each diamond has a value (in Mars dollars M$). When making the pa…

01_Hudi 框架概述、数据湖Data Lake、什么是数据湖、数据湖框架、背景概述、Hudi 介绍、Hudi 发展及特性等

本文来自"黑马程序员"hudi课程 1.第一章 Hudi 框架概述 1.1 数据湖Data Lake 1.1.1 仓库和湖泊 1.1.2 什么是数据湖 1.1.3 数据湖的优点 1.1.4 Data Lake vs Data warehouse 1.1.5 数据湖框架 1.1.5.1 Delta Lake 1.1.5.2 Apache Iceberg 1.1.5.3 Apache Hudi 1.1.6…

【福建事业单位-数学运算】01代入-倍数-方程

【福建事业单位-资料分析】01 一、代入排除法1.什么时候使用——2.怎么用例题 总结 二、倍数特性&#xff08;福建爱考&#xff09;_a余数型_b倍数型2.1余数型例题——平均分组有剩余2.2 比例型总结 3.方程法3.1 普通方程3.2 不定方程倍数特性奇偶特性尾数特性总结例题 3.3不定…