【算法】Maximal Score After Applying K Operations 执行 K 次操作后的最大分数

这篇具有很好参考价值的文章主要介绍了【算法】Maximal Score After Applying K Operations 执行 K 次操作后的最大分数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Maximal Score After Applying K Operations 执行 K 次操作后的最大分数

问题描述:

给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。你的 起始分数 为 0 。

在一步 操作 中:

选出一个满足 0 < = i < n u m s . l e n g t h 0 <= i < nums.length 0<=i<nums.length 的下标 i ,
将你的 分数 增加 nums[i] ,并且
将 nums[i] 替换为 c e i l ( n u m s [ i ] / 3 ) ceil(nums[i] / 3) ceil(nums[i]/3)
返回在 恰好 执行 k 次操作后,你可能获得的最大分数。

向上取整函数 ceil(val) 的结果是大于或等于 val 的最小整数。

1 < = n u m s . l e n g t h , k < = 1 0 9 1 < = n u m s [ i ] < = 1 0 9 1 <= nums.length, k <= 10^9\\ 1 <= nums[i] <= 10^9 1<=nums.length,k<=1091<=nums[i]<=109

分析

这是一个思路简单的模拟问题,每次可以选一个元素进行一次累加,然后把该元素的1/3放回去.

目标是在k次操作后可以得到的最大分数。

为了使k次操作最大,那么每次都应该选择集合中的最大值。
但是操作后,原始数据会变小,整个数组又需要找一次最大。
一般的做法就是每一次对n个元素重新排序,时间复杂度 O ( N log ⁡ N ) O(N\log N) O(NlogN),一共要k次,整体的时间复杂度 O ( k N log ⁡ N ) O(kN\log N) O(kNlogN).

所以也就只能使用大顶堆来处理这个问题,每次的排序时间复杂度 O ( log ⁡ N ) O(\log N) O(logN),整体的时间复杂度 O ( k log ⁡ N ) O(k\log N) O(klogN).

代码

public long maxKelements(int[] nums, int k) {
        PriorityQueue<Integer> pq = new PriorityQueue<>((a,b)->{return b-a;});
        for(int i: nums){
            pq.offer(i);
        }
        int cnt =0;
        long ans =0;
        while(cnt<k){
            cnt++;
            int t = pq.poll();
            ans +=t;
            int x = (t+2)/3;
            pq.offer(x);
        }
        return ans;
    }

时间复杂度 O ( k log ⁡ N ) O(k\log N) O(klogN)

空间复杂度 O ( N ) O(N) O(N)

Tag

Math
Greedy
Heap文章来源地址https://www.toymoban.com/news/detail-569829.html

到了这里,关于【算法】Maximal Score After Applying K Operations 执行 K 次操作后的最大分数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • spring-boot版本影响Spring AOP @Before @Around @After等执行顺序

    郁闷了半天,我通过AOP切面打印的日志顺序怪怪的,网上查了好几篇文章都说没问题,最后发现是springboot版本升级后@Before @Around @After等执行顺序发生了变化。 springboot版本 2.3.1.RELEASE 之前,after在around之后执行, 2.3.1.RELEASE 及之后,around包裹整个切面执行周期。 spring boot 版本

    2024年02月07日
    浏览(42)
  • 异常检测系列:Histogram-based Outlier Score_HBOS算法

    考虑多维数据,就像Excel电子表格中的数据框一样。列是维度或变量,行是观察结果。一个观察结果有多个值。变量的计数统计称为直方图。如果有N个变量,就会有N个直方图。如果一个观察结果的值落在直方图的尾部,那么这个值就是异常值。如果一个观察结果的许多值都是

    2024年02月20日
    浏览(26)
  • 【Linux】linux5.6引入struct proc_ops,用以替代struct file_operations在/proc下进行文件操作

    linux5.10生成在/proc目录下的文件时,利用cat读取文件,提示: 该报错是错误码:EPERM,不允许操作 发现是在移植内核代码时,未对proc接口进行适配。 linux-5.6引入结构体struct proc_ops,用以替代struct file_operations在/proc下进行文件操作。 proc_create中的proc_ops结构体类型定义改变,导

    2024年02月08日
    浏览(31)
  • Stable Diffusion - After Detailer 插件 脸部和手部 重绘算法与应用

    欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/131699857 After Detailer 是一个用于 Stable Diffusion Webui 的扩展插件,可以自动检测、遮盖和修复图片中的人脸、手部或全身,使用 ultralytics 的检测模型,而不是 mmdet 的检测模型。 工程:https://g

    2024年02月16日
    浏览(47)
  • LeetCode221.Maximal-Square<最大正方形>

        这题是动态规划,但是不会写。想着判断dp的 上,左,左上  去了。发现只能这样最大只能判断面积为4的正方形因为只会判断另外三个方格。而要想判断更大的正方形那就需要递归操作了。那肯定会超时了。 好吧,只能看答案了。 正方形的面积的长乘宽。在例子中我们

    2024年02月15日
    浏览(37)
  • QML应用动画(Applying Animations)

    目录 一 扩展可点击图像元素版本2(ClickableImage Version2) 1 第一个火箭 2 第二个火箭 3 第三个火箭 动画可以通过以下几种方式来应用: 属性动画 - 在元素完整加载后自动运行; 属性动作 - 当属性值改变时自动运行; 独立运行动画 - 使用start()函数明确指定运行或者running属性

    2024年02月02日
    浏览(31)
  • CVPR2023新作:3D点云配准--3D Registration with Maximal Cliques

    Title: 3D Registration with Maximal Cliques Affiliation: School of Computer Science, Northwestern Polytechnical University, China Authors: Xiyu Zhang, Jiaqi Yang, Shikun Zhang, Yanning Zhang Keywords: 3D point cloud registration, maximal cliques, graph theory, SVD algorithm, deep learning Summary: (1): 本文主要解决3D点云配准的问题,并针对现有

    2024年02月15日
    浏览(44)
  • 【算法】Check If Word Is Valid After Substitutions 检查替换后的词是否有效

    给你一个字符串 s ,请你判断它是否 有效 。 字符串 s 有效 需要满足:假设开始有一个空字符串 t = “” ,你可以执行 任意次 下述操作将 t 转换为 s : 将字符串 “abc” 插入到 t 中的任意位置。形式上,t 变为 tleft + “abc” + tright,其中 t == tleft + tright 。注意,tleft 和 tri

    2024年02月02日
    浏览(49)
  • 应用机器学习的建议 (Advice for Applying Machine Learning)

    问题: 假如,在你得到你的学习参数以后,如果你要将你的假设函数放到一组 新的房屋样本上进行测试,假如说你发现在预测房价时产生了巨大的误差,现在你的问题是要想改进这个算法,接下来应该怎么办? 解决思路: 一种办法是使用更多的训练样本。具体来讲,也许你

    2024年01月25日
    浏览(46)
  • 论文系列之Applying Large Language Models API to Issue Classification Problem

    这些研究展示了自动标记issue类型的不同方法,以及如何利用自然语言处理(NLP)和机器学习技术来辅助开源软件(OSS)项目的维护者和新贡献者。 通过这种方法,研究者能够在较小的数据集上训练模型,并在个体项目中实现了高达93.2%的精度、95%的召回率和89.3%的F1分数。这

    2024年02月02日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包