博客
关于我
Codeforces Round #618 (Div. 1) C. Water Balance(思维+单调栈)
阅读量:393 次
发布时间:2019-03-05

本文共 560 字,大约阅读时间需要 1 分钟。

如何使数组的字典序最小

给定n个数,每次可以选择任意区间,将区间内的所有数变成平均数,目标是通过一系列操作使得整个数组的字典序最小。字典序最小意味着数组从左到右每个数尽可能小。以下是解决方案:

  • 从后往前处理:为了使前面的数尽可能小,首先处理后面的数。处理后面的数后,前面的数可能也会因为某些操作而被降低。

  • 记录区间:使用一个数组size来记录当前处理的区间。size[i]表示从i开始到某个j结束的区间。当处理到i时,size[i]的值告诉你当前处理的区间的右端点。

  • 遍历数组:从右到左遍历数组。对于每个i,计算从i到j的区间,其中j是i后面最大的处理点。然后在这个区间内计算平均值,并将所有数设置为这个平均值。同时,记录当前的区间,方便后续处理。

  • 维护size数组:在处理每个i时,更新size数组,确保每个i都知道自己处理的区间。例如,size[3]=size[6]=6,表示i=3已经和后面的数处理过了。

  • 以下是具体实现步骤:

    • 初始化size数组,size[i]=i。
    • 从n-1遍历到1:
      • 计算从i到j的区间,其中j是i后面最大的处理点。
      • 计算区间内的平均值。
      • 将区间内的所有数设置为平均值。
      • 更新size数组,记录当前的区间。

    通过这种方法,可以确保每次操作都能带来最大的降低效果,从而使得整个数组的字典序最小。

    转载地址:http://boewz.baihongyu.com/

    你可能感兴趣的文章
    Vue3.0 性能提升主要是通过哪几方面体现的?
    查看>>
    NLP 项目:维基百科文章爬虫和分类【01】 - 语料库阅读器
    查看>>
    NLP_什么是统计语言模型_条件概率的链式法则_n元统计语言模型_马尔科夫链_数据稀疏(出现了词库中没有的词)_统计语言模型的平滑策略---人工智能工作笔记0035
    查看>>
    NLP三大特征抽取器:CNN、RNN与Transformer全面解析
    查看>>
    NLP学习笔记:使用 Python 进行NLTK
    查看>>
    NLP度量指标BELU真的完美么?
    查看>>
    NLP的不同研究领域和最新发展的概述
    查看>>
    NLP的神经网络训练的新模式
    查看>>
    NLP采用Bert进行简单文本情感分类
    查看>>
    NLP问答系统:使用 Deepset SQUAD 和 SQuAD v2 度量评估
    查看>>
    NLP项目:维基百科文章爬虫和分类【02】 - 语料库转换管道
    查看>>
    NLP:使用 SciKit Learn 的文本矢量化方法
    查看>>
    nmap 使用方法详细介绍
    查看>>
    Nmap扫描教程之Nmap基础知识
    查看>>
    nmap指纹识别要点以及又快又准之方法
    查看>>
    Nmap渗透测试指南之指纹识别与探测、伺机而动
    查看>>
    Nmap端口扫描工具Windows安装和命令大全(非常详细)零基础入门到精通,收藏这篇就够了
    查看>>
    NMAP网络扫描工具的安装与使用
    查看>>
    NMF(非负矩阵分解)
    查看>>
    nmon_x86_64_centos7工具如何使用
    查看>>