【非零段划分 / 2】

news2024/12/28 20:18:35

题目


在这里插入图片描述

在这里插入图片描述



思路

第一种思路:按照表面题意,枚举p,处理数组后进行计数: 复杂度 ∈ O ( n ⋅ m ) 复杂度 \in O(n \cdot m) 复杂度O(nm)
第二种思路:把数组看成一个二维的山形图,先将相邻的水平线段转化成点(对数组unique),再对每个子结构进行考虑 复杂度 ∈ O (    m i n ( n , m )    ) 复杂度 \in O(\;min(n, m)\;) 复杂度O(min(n,m))

具体思路:

  1. 先unique,把相邻相等的元素去重
  2. 分为三种子结构,考虑水面暴露其顶点后,其对非零段数量的贡献,记录在cnt[ ]数组中
    2.1. A形结构,只要“水面”暴露出顶点开始,对非零段数量的贡献为+1
    2.2. V形结构,只要“水面”暴露出顶点开始,对非零段数量的贡献为-1 把原本分离的两段合并了
    2.3 / \ 形结构,我们把中间点看作“顶点”,暴露顶点前后贡献不变
  3. 遍历 p    f o r    [ M − 1 , 1 ] p \; for \;[M-1, 1] pfor[M1,1] 模拟水面降低,维护一个 s u m sum sum 作为计数器


TLE代码


#include <bits/stdc++.h>
using namespace std;
const int N = 1010;
int a[N];
int main()
{
    int n;
    cin >> n;
    int amax = 0;
    for(int i = 1; i <= n; i++) cin >> a[i], amax = max(amax, a[i]);
    
    int ans = 0;
    for(int p = 1; p <= amax; p++)
    {
        int cnt = 0; int last = 0;
        for(int i = 1; i <= n; i++)
        {
            int x = a[i];
            if(a[i] < p) x = 0;
            if(x && !last) cnt++;
            last = x;
        }
        ans = max(ans, cnt);
    }
    
    cout << ans;
    return 0;
}


正确代码


#include <bits/stdc++.h>
using namespace std;
const int N = 5e5+10, M = 1e4+10;
int cnt[M], a[N];
int main()
{
    int n;
    cin >> n;
    for(int i = 1; i <= n; i++) cin >> a[i];
    
    n = unique(a+1, a+n+1) - (a+1);
    a[0] = 0, a[n+1] = 0;
    for(int i = 1; i <= n; i++)
    {
        int x = a[i-1], y = a[i], z = a[i+1];
        if(x < y && z < y) cnt[y]++;
        if(x > y && z > y) cnt[y]--;
    }
    int ans = 0; int sum = 0;
    for(int i =  M - 1; i >= 1; i--)
    {
        sum += cnt[i];
        ans = max(ans, sum);
    }
    
    cout << ans;
    return 0;
}

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

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

相关文章

Java核心知识体系-并发与多线程:线程基础

1 先导 Java线程基础主要包含如下知识点&#xff0c;相信我们再面试的过程中&#xff0c;经常会遇到类似的提问。 1、线程有哪几种状态? 线程之间如何转变&#xff1f; 2、线程有哪几种实现方式? 各优缺点&#xff1f; 3、线程的基本操作&#xff08;线程管理机制&#xff…

数据资产入表元年,企业如何抓住数据资产增值的机遇?

近年来&#xff0c;政府将数据要素纳入了经济发展的重要指示性文件当中&#xff0c;希望利用数据驱动。《全国数据资源调查报告&#xff08;2023年&#xff09;》显示&#xff0c;2024年以来不少地方纷纷成立“数据集团”&#xff0c;加快盘活数据资产。作为数字经济时代的首要…

Java | Leetcode Java题解之第389题找不同

题目&#xff1a; 题解&#xff1a; class Solution {public char findTheDifference(String s, String t) {int ret 0;for (int i 0; i < s.length(); i) {ret ^ s.charAt(i);}for (int i 0; i < t.length(); i) {ret ^ t.charAt(i);}return (char) ret;} }

编写Dockerfile第二版

目标 更快的构建速度 更小的Docker镜像大小 更少的Docker镜像层 充分利用镜像缓存 增加Dockerfile可读性 让Docker容器使用起来更简单 总结 编写.dockerignore文件 容器只运行单个应用 将多个RUN指令合并为一个 基础镜像的标签不要用latest 每个RUN指令后删除多余文…

leetcode172. 阶乘后的零,遍历每个因数中5的个数

leetcode172. 阶乘后的零 给定一个整数 n &#xff0c;返回 n! 结果中尾随零的数量。 提示 n! n * (n - 1) * (n - 2) * … * 3 * 2 * 1 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;0 解释&#xff1a;3! 6 &#xff0c;不含尾随 0 示例 2&#xff1a; 输…

第八届控制工程与先进算法国际论坛(IWCEAA 2024)

重要信息 会议大会官网&#xff1a;www.iwaace.cn&#xff08;点击进一步了解&#xff09; 二轮截稿时间&#xff1a;2024年09月27日 录用通知时间&#xff1a;投稿后7个工作日 收录检索类型&#xff1a;IEEE Xplore, EI, Scopus 大会介绍 第八届控制工程与先进算法国际论…

python 交互模式怎么切换目录

假如要用交互界面调用一个.py文件&#xff1a; &#xff08;1&#xff09;用cmd界面定位到文件位置&#xff0c;如cd Desktop/data/ #进入desktop下data目录。 &#xff08;2&#xff09;接着打开python&#xff08;输入python&#xff09; 调用os &#xff08;1&#xff0…

3.js - modelPosition.z = sin((modelPosition.x+uTime)*10.0)*0.05;

哈 1、完整的动态波纹效果吧 main.js import * as THREE from three import { OrbitControls } from three/examples/jsm/controls/OrbitControls// 顶点着色器 import basicVertexShader from ./shader/11-01/raw/vertex.glsl?raw // 片元着色器 import basicFragmentShad…

python OpenGL绘制正八面体代码

学习OpenGL过程中&#xff0c;先从绘制三角形开始逐渐对Opengl有一些了解&#xff0c;到现在进阶到绘制立方体。通过借鉴网友绘制六面体得到灵感&#xff0c;改了一下他的代码成功绘制出正八面体。不管是绘制三角形还是绘制立方体&#xff0c;对于空间坐标系要相当熟悉&#xf…

苍穹外卖项目前端DAY03

前端DAY03 1、套餐管理 1.1、套餐分页查询 1.1.1、需求分析和接口设计 产品原型&#xff1a; 业务规则&#xff1a; 根据页码展示套餐信息每页展示10条数据分页查询时可以根据需要&#xff0c;输入套餐名称、套餐分类、售卖状态进行查询 接口设计&#xff1a; 套餐分页查…

如何使用电商API接口?(淘宝|京东商品详情数据接口)

一、了解电商API接口&#xff1a; 如今&#xff0c;在电商市场中&#xff0c;电商API接口的广泛应用极大地提高了电商行业的工作效率&#xff0c;使得商家能够灵活集成多种服务&#xff0c;高效优化业务流程。 当前&#xff0c;电商平台中的多种业务都可以通过使用API接口来做…

Tomato靶场渗透测试

1.扫描靶机地址 可以使用nmap进行扫描 由于我这已经知道靶机地址 这里就不扫描了 2.打开网站 3.进行目录扫描 dirb http&#xff1a;//172.16.1.113 发现有一个antibot_image目录 4.访问这个目录 可以看到有一个info.php 5.查看页面源代码 可以发现可以进行get传参 6.…

脉脉高聘:大模型算法岗平均月薪近7万元,位居高薪榜第一

9月5日&#xff0c;脉脉高聘人才智库数据显示&#xff0c;大模型领域整体供需比1.76&#xff0c;整体供大于求。同时&#xff0c;高技术岗位人才稀缺&#xff0c;云计算人才供需比仅为0.33&#xff0c;相当于3个岗位争夺1个人才。大模型算法岗位平均月薪最高&#xff0c;超过6.…

【STM32+HAL库】---- 驱动MAX30102心率血氧传感器

硬件开发板&#xff1a;STM32F407VET6 软件平台&#xff1a;cubemaxkeilVScode1 MAX30102心率血氧传感器工作原理 MAX30102传感器是一种集成了红外光源、光电检测器和信号处理电路的高度集成传感器&#xff0c;主要用于心率和血氧饱和度的测量。以下是MAX30102传感器的主要特点…

草料二维码功能上新!可以跨分区移动或复制内容了!

支持将 分区 下的内容移动或复制到其他分区。适用于将原初始分区下的内容按业务划分&#xff0c;移动到其他分区。或者当物品流转或业务变更时&#xff0c;可以及时将码及数据移动到对应分区&#xff0c;移动后&#xff0c;二维码图案不会发生变化。 目前仅表单、活码、批量模…

在修改文件 /ect/hosts时无法保存 can‘t open file for writing

输入&#xff1a;q! 即可 情境&#xff1a; 在Master节点中执行如下命令打开并修改Master节点中的“/etc/hosts”文件&#xff1a; sudo vim /etc/hosts 可以在hosts文件中增加如下两条IP和主机名映射关系&#xff1a; 192.168.1.121 Master 192.168.1.122 Slave1

解决App推广痛点:一键获取下载数据的秘诀

在App推广的过程中&#xff0c;获取准确的下载数据一直是一个令人头疼的问题。你知道吗&#xff1f;无法精确追踪用户来源和下载量&#xff0c;就像是在黑暗中摸索&#xff0c;让推广效果大打折扣。今天&#xff0c;我们就来揭秘如何轻松获取App下载数据&#xff0c;优化你的推…

BaseThreadStart代码分析

BaseThreadStart代码分析 第一部分&#xff1a; ​​​​​​​ 在调用CreateThead创建线程的时候&#xff0c;操作系统会为新线程创建线程内核对想象&#xff0c; 线程内核对象包含了线程的上下文&#xff08;是一个C O N T E X T结构&#xff09;以及一些其他属性和统计信息&…

计算机毕业设计 | SSM停车场管理系统(附源码)

1&#xff0c; 概述 1.1 课题背景 随着社会的快速发展&#xff0c;计算机的影响是全面且深入的。人们的生活水平不断提高&#xff0c;日常生活中用户对停车场管理系统方面的要求也在不断提高&#xff0c;需要的人数更是不断增加&#xff0c;使得停车场管理系统的开发成为必需…

【HarmonyOS】安装包报错,code:9568282 error: install releaseType target not same.

【HarmonyOS】安装包报错&#xff0c;code:9568282 error: install releaseType target not same. 报错信息 Install Failed: error: failed to install bundle. code:9568282 error: install releaseType target not same. You can also uninstall and reinstall the module…