博客
关于我
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/

    你可能感兴趣的文章
    python-网络编程
    查看>>
    python写入文件出现空行
    查看>>
    PYTHON-返回给定x的多边形路径的y坐标
    查看>>
    python-进程池与线程池,协程
    查看>>
    Python-通过函数传递变量
    查看>>
    Python内置函数详解——总结篇
    查看>>
    Python.对象集合中的标识.和散列
    查看>>
    Python.硒.拖放错误“AttributeError:move_to 需要 WebElement“
    查看>>
    Python内置函数详解
    查看>>
    Python/Kivy:从一个类调用函数到另一个类并在 Python 中显示小部件
    查看>>
    Python/Kivy:我可以在双击标签时调用函数吗
    查看>>
    python内置函数5-frozenset()
    查看>>
    Python/Plotly:如何使用要显示的信息自定义悬停模板?
    查看>>
    Python/Selenium - 无法单击 www.instagram.com 上的“接受 cookie“按钮
    查看>>
    Python内置函数(35)——next
    查看>>
    python写入mysql
    查看>>
    python写入csv老是乱码或者各种不好
    查看>>
    Python内置函数
    查看>>
    Python2 安装MySQLdb库
    查看>>
    Python2 已终结,入手Python 3,你需要这30个技巧
    查看>>