首页 > 其他分享 >2611. 老鼠和奶酪

2611. 老鼠和奶酪

时间:2023-06-07 10:55:53浏览次数:46  
标签:老鼠 reward2 2611 reward1 int 奶酪 poi

2611. 老鼠和奶酪

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

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

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

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

示例 1:

输入:reward1 = [1,1,3,4], reward2 = [4,4,1,1], k = 2
输出:15
解释:这个例子中,第一只老鼠吃掉第 2 和 3 块奶酪(下标从 0 开始),第二只老鼠吃掉第 0 和 1 块奶酪。
总得分为 4 + 4 + 3 + 4 = 15 。
15 是最高得分。
示例 2:

输入:reward1 = [1,1], reward2 = [1,1], k = 2
输出:2
解释:这个例子中,第一只老鼠吃掉第 0 和 1 块奶酪(下标从 0 开始),第二只老鼠不吃任何奶酪。
总得分为 1 + 1 = 2 。
2 是最高得分。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/mice-and-cheese
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

DFS(503/564)

class Solution {
public:
    int res=0;
    void dfs(vector<int>reward1,vector<int>reward2,int k,int eat1,int poi,int now){
        if(eat1>k)  return;
        if(poi>=reward1.size()){
            if(eat1==k)
                res=max(res,now);
            return;
        }
        dfs(reward1,reward2,k,eat1+1,poi+1,now+reward1[poi]);
        dfs(reward1,reward2,k,eat1,poi+1,now+reward2[poi]);
    }


    int miceAndCheese(vector<int>& reward1, vector<int>& reward2, int k) {
        dfs(reward1,reward2,k,0,0,0);
        return res;
    }
};
[54,59,94,87,32,10,55,44,21,73,12,70,89,49,13,34,78,20,20,75,90,44,48,74,78,32,70,76,79,49,50,69]
[78,43,69,22,32,67,65,38,51,4,21,27,82,61,12,85,62,60,67,16,22,3,5,16,13,35,13,41,72,85,20,54]
17

超出内存限制,看了下题解也没有写dfs的,也懒得去更改递归条件了。

diff+排序

题目可以理解为。用1中的k个数去替换2中的数。使2的和最大。可以先将2的和算出来。然后将差值最大的k个数加上
class Solution {
public:
    int miceAndCheese(vector<int>& reward1, vector<int>& reward2, int k) {
        //若全是第二只老鼠吃的
        int sum=0;
        for(int num:reward2)   sum+=num;
        //计算同一块奶酪由不同老鼠吃的差值
        for(int i=0;i<reward1.size();i++)   reward1[i]-=reward2[i];
        sort(reward1.begin(),reward1.end(),greater<int>());
        for(int i=0;i<k;i++)    sum+=reward1[i];
        return sum;
    }
};

标签:老鼠,reward2,2611,reward1,int,奶酪,poi
From: https://www.cnblogs.com/SkyDusty/p/17462701.html

相关文章

  • 2611. 老鼠和奶酪
    有两只老鼠和 n 块不同类型的奶酪,每块奶酪都只能被其中一只老鼠吃掉。下标为i 处的奶酪被吃掉的得分为:如果第一只老鼠吃掉,则得分为 reward1[i] 。如果第二只老鼠吃掉,则得分为 reward2[i] 。给你一个正整数数组 reward1 ,一个正整数数组 reward2 ,和一个非负整数 k......
  • 【蓝桥杯集训·每日一题】AcWing 4309. 消灭老鼠
    写在前面本人CSDN博客主页:这里一、题目1、原题链接4309.消灭老鼠2、题目描述约翰的农场可以看作一个二维平面。农场中有n个老鼠,在毁坏着农田。第i个老鼠的位置坐标为(xi,yi)。不同老鼠可能位于同一位置。在(x0,y0)处,装有一个双向发射的激光枪,该位置没有老鼠。激光枪每次发......
  • 题目奶酪单
    Manacher模板:LuoguP3805反演:LuoguP3279总结......
  • P1433 吃奶酪-状压dp
    P1433吃奶酪-状压dp这是5.15晚自习的题目预习直接上题逝一逝吧放心,是对的代码P1433吃奶酪-洛谷|计算机科学教育新生态(luogu.com.cn)记录详情-洛谷|计算机科学教育新生态(luogu.com.cn)我真喜欢记忆化搜索(嘿嘿嘿)记忆化搜索的话,更容易理解dp[x][zt]设定为走到......
  • [SWPUCTF 2021 新生赛]老鼠走迷宫
    查壳:熟悉的配方,解包,反编译吧:进入.py文件:题目是走迷宫,进去后也发现了地图,那么我们将它打印出来:得到这么一张地图,那么看看起点和终点,起点:第一行第二个,终点:最后一行倒数第二个。画地图咯:得到Des='sssssddssddssaaaassssddwwddddssssssaawwaassssddssaassddddwwddssddwwwwwww......
  • PAT Basic 1107. 老鼠爱大米
    PATBasic1107.老鼠爱大米1.题目描述:翁恺老师曾经设计过一款Java挑战游戏,叫“老鼠爱大米”(或许因为他的外号叫“胖胖鼠”)。每个玩家用Java代码控制一只鼠,目标是抢吃尽可能多的大米让自己变成胖胖鼠,最胖的那只就是冠军。因为游戏时间不能太长,我们把玩家分成\(N\)组,每组......
  • 力扣---6364. 老鼠和奶酪
    有两只老鼠和 n 块不同类型的奶酪,每块奶酪都只能被其中一只老鼠吃掉。下标为i 处的奶酪被吃掉的得分为:如果第一只老鼠吃掉,则得分为 reward1[i] 。如果第二只老鼠吃掉,则得分为 reward2[i] 。给你一个正整数数组 reward1 ,一个正整数数组 reward2 ,和一个非负整数 k ......
  • P1433 吃奶酪 标签: 动态规划,dp | 状态压缩
    详见:https://www.luogu.com.cn/problem/P1433就不写基础原理了,直接看注释吧点击打开非map版#include<iostream>#include<cstdio>#include<cmath>#include<alg......
  • 1599 - 米老鼠偷糖果
       ......
  • 生活常识: 乳制品中芝士与奶酪的区别 All In One
    生活常识:乳制品中芝士与奶酪的区别AllInOne固态乳制品芝士披萨奶酪......