当前位置: 首页 > article >正文

CCFCSP试题编号:202109-2试题名称:非零段划分

用差分法

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;

const int N = 500000;
const int M = 10000;
int a[N + 2 ]= { 0 };
int d[M + 1] = { 0 };

int main()
{
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++)
    {
        cin >> a[i];
    }
    a[0] = a[n + 1] = 0;

    n = unique(a, a + n + 2) - a - 1;//去重

    memset(d, 0, sizeof d);
    for (int i = 1; i < n; i++)
        if (a[i - 1] < a[i] && a[i] > a[i + 1])
        {
            d[a[i]]++;
        }
        else if (a[i - 1] > a[i] && a[i] < a[i + 1])
        {
            d[a[i]]--;
        }

    int ans = 0, sum = 0;   // 差分前缀和即为答案
    for (int i = M; i >= 1; i--)
    {
        sum += d[i];
        ans = max(ans, sum);
    }


    cout << ans << endl;

    return 0;
}

 


http://www.kler.cn/news/149151.html

相关文章:

  • leetcode每日一题35
  • Web学习笔记
  • 面试必须要知道的MySQL知识--索引
  • AntDB数据库:从海量数据处理,到5G计费商用核心
  • 使用vue-admin-template时,需要注意的问题,包括一定要去除mock.js注释
  • 0005Java程序设计-ssm基于微信小程序的校园求职系统
  • Java后端开发——MVC商品管理程序
  • Java Web基础教程
  • 第二证券:燃料电池产业进入发展快车道 多家公司披露布局进展
  • 【FGPA】Verilog:JK 触发器 | D 触发器 | T 触发器 | D 触发器的实现
  • 【MATLAB】RLMD分解+FFT+HHT组合算法
  • NOI / 1.7编程基础之字符串 30:字符环 c语言 两次遍历解决循环
  • 11.27二叉查找树,遍历二叉树,层序(判断是不是完全二叉树),根据遍历序列重构二叉树,递归输入建树(树的定义,结构体细节,typedef)
  • Spring Boot进行单元测试,一个思路解决重启低效难题!
  • Docker compose启动服务遇到的问题
  • el-tabel实现拖拽排序
  • 绩效考核的基础及基本内容
  • NOI / 1.8编程基础之多维数组 提问24:蛇形填充数组 c语言
  • 进程和线程的关系
  • 力扣106. 从中序与后序遍历序列构造二叉树
  • linux(2)之buildroot使用手册
  • asp.net mvc游戏门户网站
  • 基于U2-Net如何训练一个一键抠图模型
  • 什么是量子优势?
  • 系列十六、Spring IOC容器的扩展点
  • vue3-10
  • 【C++】构造函数和析构函数第四部分(深拷贝和浅拷贝)--- 2023.11.25
  • Spring Boot 3 + Spring Security 6 最新版本修改 Json 登录后 RememberMe 功能问题失效的解决方案
  • NextJS开发:封装shadcn/ui中的AlertDialog确认对话框
  • windows系统mobaxterm远程执行linux上ssh命令