文章目录

  • Mice and Cheese 老鼠和奶酪
    • 问题描述:
    • 分析
    • 代码
    • Tag

Mice and Cheese 老鼠和奶酪

问题描述:

有两只老鼠和 n 块不同类型的奶酪,每块奶酪都只能被其中一只老鼠吃掉。

下标为 i 处的奶酪被吃掉的得分为:

如果第一只老鼠吃掉,则得分为 reward1[i] 。
如果第二只老鼠吃掉,则得分为 reward2[i] 。
给你一个正整数数组 reward1 ,一个正整数数组 reward2 ,和一个非负整数 k 。

请你返回第一只老鼠恰好吃掉 k 块奶酪的情况下,最大 得分为多少。

reward1,reward2范围[1,100000] ,k范围[0,n] , r e w a r d 1 [ i ] , r e w a r d 2 [ i ] reward1[i],reward2[i] reward1[i],reward2[i] 范围[1,1000]

分析

这是一个很有意思的问题,2只老鼠吃同一组奶酪得分不一定一样。而要求的是当A恰好吃掉k个奶酪后,最大的得分。
也就是当A恰好吃掉 k k k个奶酪,B把剩余的 n − k n-k n−k个都吃掉,在这样的情况下该得到的最大分数。
理论上,用 f [ i ] f[i] f[i]表示A吃掉i个奶酪可以得到的最大分数,用 g [ i ] g[i] g[i]表示B吃掉i个奶酪可以得到的最大分数,此时 f [ k ] + g [ n − k ] f[k]+g[n-k] f[k]+g[n−k]应该会是最大分数,以这个模型来思考,并不能完整的覆盖所有的情况,因为在这2个函数中,可能会有重叠的奶酪。最安全的应该是A从 n n n个奶酪中选 k k k个后,B拿走剩余的 n − k n-k n−k,所能得到的最大分。这个思路下,很明显是一个DFS,但是看到数据规模后,这个思路很快就放弃了。
以100000的规模下,最理想的时间复杂度就是 O ( N ) O(N) O(N),稍差的就是 O ( N L o g N ) O(NLogN) O(NLogN)。
所以模拟,暴力,DFS,可以洗洗睡了。
换个角度思考在不考虑限制的情况下,以一个奶酪来看,AB谁吃,这个决策最佳,很明显,当A的 r e w a r d 1 [ i ] > r e w a r d 2 [ i ] reward1[i]>reward2[i] reward1[i]>reward2[i],应该给A吃,通俗的说,谁得分高,谁吃
用 F [ i ] F[i] F[i]表示 A 吃掉 i 奶酪得分 − B 吃掉 i 奶酪的得分 A吃掉i奶酪得分-B吃掉i奶酪的得分 A吃掉i奶酪得分−B吃掉i奶酪的得分,当 F [ i ] > 0 F[i]>0 F[i]>0时,奶酪给A,一定优于给B,因此排序从大到小,所以选择最大的 k k k个 F [ i ] F[i] F[i]给A, 这个策略就是最佳的。因为F表示的是得分差,因此还需要计算B把所有奶酪都吃掉的得分,然后再加上 K K K个 F [ i ] F[i] F[i]。

代码

public int miceAndCheese(int[] reward1, int[] reward2, int k) {int ans = 0;int n = reward1.length;int[] diffs = new int[n];for (int i = 0; i < n; i++) {ans += reward2[i];diffs[i] = reward1[i] - reward2[i];}Arrays.sort(diffs);for (int i = 1; i <= k; i++) {ans += diffs[n - i];}return ans;}

时间复杂度O(NlogN)

空间复杂度O(N)

Tag

Greedy Array Dynamic Programming

【算法】Mice and Cheese 老鼠和奶酪 Greedy相关推荐

  1. 基于遗传算法和粒子群算法的混合算法实现小老鼠找奶酪问题

    此为老师留的大作业 算法依据:http://wenku.baidu.com/view/4387f569af1ffc4ffe47acc7 算法实现 #ifndef CHEESE_H #define CH ...

  2. 2023-06-07 LeetCode每日一题(老鼠和奶酪)

    2023-06-07每日一题 一.题目编号 2611. 老鼠和奶酪 二.题目链接 点击跳转到题目位置 三.题目描述 有两只老鼠和 n 块不同类型的奶酪,每块奶酪都只能被其中一只老鼠吃掉. 下标为 i ...

  3. 力扣 2611. 老鼠和奶酪

    题目描述:2611. 老鼠和奶酪 有两只老鼠和n块不同类型的奶酪,每块奶酪都只能被其中一只老鼠吃掉. 下标为i处的奶酪被吃掉的得分为: 如果第一只老鼠吃掉,则得分为reward1[i].如果第二只老鼠 ...

  4. LeetCode 2611. 老鼠和奶酪:排序 + 贪心

    [LetMeFly]2611.老鼠和奶酪:排序 + 贪心 力扣题目链接:https://leetcode.cn/problems/mice-and-cheese/ 有两只老鼠和 n 块不同类型的奶酪, ...

  5. 【每日一题Day230】LC2611老鼠和奶酪 | 排序+贪心

    老鼠和奶酪[LC2611] 有两只老鼠和 n 块不同类型的奶酪,每块奶酪都只能被其中一只老鼠吃掉. 下标为 i 处的奶酪被吃掉的得分为: 如果第一只老鼠吃掉,则得分为 reward1[i] . 如果第 ...

  6. Leetcode.2611 老鼠和奶酪

    题目链接 Leetcode.2611 老鼠和奶酪 Rating : 1663 题目描述 有两只老鼠和 n 块不同类型的奶酪,每块奶酪都只能被其中一只老鼠吃掉. 下标为 i 处的奶酪被吃掉的得分为: 如 ...

  7. 【记忆化搜索】老鼠吃奶酪

    woc,这种DP用记忆化搜索就很好写啊,老师之前说要建图什么的让我一直望而生畏,实际上记忆化一下就好了啊啊啊啊啊啊 如果图中不存在环而是个DAG就可以用记忆化搜索写,否则就得手动建图跑最短路 4559 ...

  8. [LeetCode刷题] 2611. 老鼠和奶酪--Java实现

    ##  题目链接 2611. 老鼠和奶酪 - 力扣(LeetCode) ##  题目描述 有两只老鼠和 n 块不同类型的奶酪,每块奶酪都只能被其中一只老鼠吃掉. 下标为 i 处的奶酪被吃掉的得分为: ...

  9. 前面问的老鼠找奶酪 算法题的js实现代码

    这是一个迷宫问题,在一个二维矩阵中寻找从起点到终点的最短路径,其中矩阵中的障碍物需要被躲避. 下面是一个示例代码: let grid = [[1, 0, 1, 1, 1],[1, 0, 1, 0, 1 ...

最新文章

  1. tf.contrib.layers.fully_connected详解
  2. oracle安装清单过不去,oracle 11g(二)安装过程
  3. Eclipse Modeling Framework, 2nd Edition. (EMF)学习笔记(一)——EMF介绍
  4. P1758-[NOI2009]管道取珠【dp】
  5. xss img onerror java_java后台防止XSS的脚本攻击
  6. java操作Excel之POI(4)利用POI实现数据的批量导出
  7. freebsd 运行linux,Freebsd 下运行 QQ For Linux 的方法
  8. MySQL 5.7安装(多实例)最佳实践
  9. solidity 合约权限授权_Curve + zkSync L2:以太坊的ZK Rollup智能合约
  10. QQ去水印小程序源码全新系统
  11. Allwinner Tina Linux 如何打开ssh远程登录支持
  12. java web程序设计任务驱动教程答案,Java Web应用程序开发任务驱动式教程
  13. arcgis 批量计算几何_ArcGIS四种计算图斑面积的方法
  14. Typora+PicGo+LskyPro打造舒适写作环境
  15. 奶爸日记19 - 湖边芦苇
  16. 开源物业管理系统的对比
  17. oracle新建用户并授权视图
  18. 生活中的法则II(转载)
  19. 一文教你如何快速实现声音识别
  20. 时空猎人无尽之塔初级玩法解析攻略

热门文章

  1. 提升IE或WoW的安装或更新速度
  2. 学习笔记之Ultrascale利用STARTUPE3读写BPI
  3. 海陆空铁”400+线路齐发 菜鸟推出天猫双11进口商家5大备货锦囊
  4. golang常用库之-操作redis go-redis/redis库、 go-redsync/redsync库(redis分布式锁)
  5. Linux系统配置链路聚合
  6. requests+selenium+pyquery+threading实现LOL所有装备图片爬取保存
  7. 技术小白的AI产品经理成长之路第一步(吴恩达《深度学习工程师》学习笔记2.1二分分类)希望可以给同为技术小白的同学一点深参考
  8. 「人生重开模拟器」手游版即将上架!是延续火爆热度还是高开低走?
  9. 【小程序源码】精美UI强大娱乐功能组合微信小程序源码下载,安装简单
  10. 计算机千分之一符号,科学网—万分之一符号, 千分之一符号 和PPM符号 - 丁祥欢的博文...