leetcode 2234. 花园的最大总美丽值

news/2025/1/7 21:05:35/

题目:2234. 花园的最大总美丽值 - 力扣(LeetCode)

1. 先对flowers进行升序排序,计算现有“完善花园”的数量minFull;如果没有,minFull为n。

2. 计算前缀和f[]。

3. 从i=(minFull-1 to 0)枚举从第i个开始的花园都变成“完善花园”后剩余的花的数量,计算剩余的花可以使最小值最大的值

4. 因为我们是倒序枚举的,设“非完善花园”的最小数量是flowers[j],则j在美剧过程中一定不会增长,可以通过f[]和剩余的花的数量快速计算出是否可以满足“非完善花园”的最小数量是flowers[j]这一条件;如果满足该条件后花朵数量还有剩余,可以计算可以给所有“非完善花园”各增加多少朵花

O(nlog(n))的排序+O(n)的遍历就可以得到答案了:

class Solution {
public:long long maximumBeauty(vector<int>& flowers, long long newFlowers, int target1, int full1, int partial1) {long long target = target1;long long full = full1;long long partial = partial1;sort(flowers.begin(), flowers.end());long long n = flowers.size();long long* f = new long long[n];if (flowers[0] >= target) {return full * n;}f[0] = flowers[0];long long minFull = n;for (int i = 1; i < n; i++) {f[i] = flowers[i];f[i] += f[i - 1];if (flowers[i] >= target) {minFull = i;break;}}long long ret = 0;long long j = minFull - 1;long long flowerJ = flowers[j];long long score, remain, temp;for (long long i = minFull - 1; i >= 0; i--) {if (j > i) {j = i;flowerJ = flowers[j];}while (j >= 0 && f[j] + newFlowers < flowerJ * (j + 1)) {j--;flowerJ = flowers[j];}remain = newFlowers - (flowerJ * (j + 1) - f[j]);temp = flowerJ + remain / (j + 1);if (temp >= target) {temp = target - 1;}score = (n - 1 - i) * full + temp * partial;if (score > ret) {ret = score;}newFlowers -= (target - flowers[i]);if (newFlowers < 0) {break;}}if (newFlowers >= 0) {score = n * full;if (score > ret) {ret = score;}}return ret;}
};


http://www.ppmy.cn/news/1561373.html

相关文章

《Opencv》基础操作详解(5)

接上篇&#xff1a;《Opencv》基础操作详解&#xff08;4&#xff09;-CSDN博客 目录 接上篇&#xff1a;《Opencv》基础操作详解&#xff08;4&#xff09;-CSDN博客 25、轮廓近似 简介 接口用法 参数说明 返回值 代码示例 结果展示 26、轮廓最小外接圆 简介 接口用…

(MTK平台mt8168)通过i2c调试外接MCU管理外接电源项目

这个项目是我几年前在mtk方案公司调试的一个比较具有综合性的项目,涉及到知识点有很多,我个人认为算是一个很经典的一个项目,当然这个是对技术人员而讲。我大概总结一下,涉及到i2c,kernel中的timer_list,示波器和逻辑分析仪的使用,还有i2c硬件上的原理,如果host断采用3…

ESP32物联网无线方案,智能穿戴设备联网通信,产品无线交互应用

在物联网的世界里&#xff0c;每一个设备都不再是孤立的个体&#xff0c;它们通过无线连接芯片相互连接&#xff0c;形成一个庞大的智能网络。这些芯片是实现万物互联的基础&#xff0c;它们使得设备能够相互沟通&#xff0c;共享数据&#xff0c;从而创造出无限的可能性。 这…

【51单片机零基础-chapter5:模块化编程】

模块化编程 将以往main中泛型的代码,放在与main平级的c文件中,在h中引用. 简化main函数 将原来main中的delay抽出 然后将delay放入单独c文件,并单独开一个delay头文件,里面放置函数的声明,相当于收纳delay的c文件里面写的函数的接口. 注意,单个c文件所有用到的变量需要在该文…

RedisTemplate执行lua脚本及Lua 脚本语言详解

使用RedisTemplate执行lua脚本 在开发中&#xff0c;我们经常需要与Redis数据库进行交互&#xff0c;而Redis是一个基于内存的高性能键值存储数据库&#xff0c;它支持多种数据结构&#xff0c;并提供了丰富的命令接口。在某些情况下&#xff0c;我们可能需要执行一些复杂的逻…

形象地理解UE4中的数据结构 TLinkedListBase

大家都熟知链表&#xff0c;但不一定能快速看懂UE4中的数据结构。 TLinkedListBase表示“链接”中的一个结点&#xff0c;有三个成员&#xff1a; 一、ElementType Element; 表示具体的业务&#xff0c;例如int链条中的一个整数。 二、NextLink 表示 “下一个Node”&#…

【Blackbox Exporter】prober.Handler源码详细分析

http.HandleFunc(path.Join(*routePrefix, "/probe"), func(w http.ResponseWriter, r *http.Request) {sc.Lock()conf : sc.Csc.Unlock()prober.Handler(w, r, conf, logger, rh, *timeoutOffset, nil, moduleUnknownCounter, allowedLevel)})我们了解到blackbox_ex…

使用mysql报Communications link failure异常解决

背景 线上使用polarDB&#xff0c;基于mysql(5.7)&#xff0c;架构为springbootmybatisplusdurid连接池&#xff0c;部分业务场景涉及大表更新和查询操作&#xff0c;在查询慢sql且超过一定时间时就会报出"Communications link failure"异常&#xff0c;主要体现在界…