1388. 3n 块披萨

news2025/7/19 11:24:33

文章目录

      • 1. 背
      • 2. 题目
      • 3. 答案

1. 背

首先,考虑没有环的情况。如果没有环这道题可以转变为和打家劫舍II一毛一样。但是明明这道题是三块披萨一拿啊,打家劫舍是相邻不能拿,还是不一样啊。

这块证明挺难的,但是我可以用个简单的例子。例如008080,这种情况我能拿到16的披萨,因为我把第一个0拿走后,就变成了0空空空80,此时我再拿8,aclice可以拿前面那个0,也是能办到的。

反正最终的结果就是只要两个不相邻就行。

dp[i][j]表示前i个数字中,选择j个数字时的最大值。dp的行就是slice数组的长度,即元素的个数。dp的列就是行除以3(即能拿几次披萨)。不过,不过哈,写代码不能这么定义行列的长度,后面再说。
因此dp[i][j] = max(dp[i-2][j-1]+slices[i],dp[i-1][j]),如果选择第i个元素,那么i-1就不能选,就得选i-2,如果不选i,必须选好j个数字,因此就是dp[i-1][j]。

那么有环怎么办,还和打家劫舍II一样,判断[0,n-2]和[1,n-1]。问题又来了,传入的明明时3的倍数,我手动删掉一个,还能是3的倍数吗?不是的话肯定有影响,但是因为影响的是其他人的结果,但是题目只问我能拿多少披萨。

最后一个问题,上面说了dp数组的横纵长度不能直接用数组长度啥的表示,答案是这样的,它们把横纵坐标长度都加了一,原因很简答,保证数组从1开始。注意dp的定义“前i个数字中,选择j个数字时的最大值”,前0个数字不好处理,所以变成前1个数字。

2. 题目

给你一个披萨,它由 3n 块不同大小的部分组成,现在你和你的朋友们需要按照如下规则来分披萨:

你挑选 任意 一块披萨。
Alice 将会挑选你所选择的披萨逆时针方向的下一块披萨。
Bob 将会挑选你所选择的披萨顺时针方向的下一块披萨。
重复上述过程直到没有披萨剩下。
每一块披萨的大小按顺时针方向由循环数组 slices 表示。

请你返回你可以获得的披萨大小总和的最大值。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/pizza-with-3n-slices
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
在这里插入图片描述
输入:slices = [1,2,3,4,5,6]
输出:10
解释:选择大小为 4 的披萨,Alice 和 Bob 分别挑选大小为 3 和 5 的披萨。然后你选择大小为 6 的披萨,Alice 和 Bob 分别挑选大小为 2 和 1 的披萨。你获得的披萨总大小为 4 + 6 = 10 。

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

3. 答案

class Solution {
public:
    int maxSizeSlice(vector<int>&slices)
    {
        int row = static_cast<int>(slices.size());
        int col = (row+1)/3;
        vector<vector<int>>dp(row+1,vector<int>(col+1,0));
        for(int i=1;i<=row;++i)
        {
            for(int j=1;j<=col;++j)
            {
                auto num1 = (i-2>=0&&j-1>=0?dp[i-2][j-1]:0)+slices[i-1];
                auto num2 = i-1>=0?dp[i-1][j]:0;
                dp[i][j] = max(num1,num2);
            }
        }
        return dp[row][col];
    }
    int maxSizeSlices(vector<int>& slices) {
        vector<int>a1(slices.begin(),slices.end()-1);
        vector<int>a2(slices.begin()+1,slices.end());
        auto num1 = maxSizeSlice(a1);
        auto num2 = maxSizeSlice(a2);
        return max(num1,num2); 
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/17484.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MicroPython-On-ESP8266——8x8LED点阵模块(1)驱动原理

MicroPython-On-ESP8266——8x8LED点阵模块&#xff08;1&#xff09;驱动原理 1. 8x8LED点阵模块介绍 1.1. 显示模块的升级 之前已经试过点亮8段数码管&#xff0c;并能够使用两片HC595芯片来驱动数码管。今天我又找来了一个8x8点阵LED屏&#xff0c;下面分析一下这个屏幕并…

【用户画像】Redis的简介和安装

文章目录一 Redis简介1 应用场景&#xff08;1&#xff09;业务系统&#xff1a;配合关系型数据库做高速缓存&#xff08;2&#xff09;大数据场景&#xff1a;缓存数据&#xff08;3&#xff09;大数据场景&#xff1a;临时数据&#xff08;4&#xff09;大数据场景&#xff1…

【计算机毕业设计】医院管理系统源码

一、系统截图&#xff08;需要演示视频可以私聊&#xff09; 一&#xff0e;摘要 目前各医疗机构中&#xff0c;绝大部分中小型医疗机构内部没有实现任何信息化管理&#xff0c;医院临床信息&#xff0c;业务流程的数据依然采取纸质记录&#xff0c;造成数据容易丢失&#xff…

CCSP通过经验 | 讲义覆盖的知识点更全面(含题型分析)

我一直就职于国内网络安全乙方&#xff0c;自2014年接触云安全后&#xff0c;一直希望能获取一个比较官方的云安全从业水平的资格证书。 在横向比较了如腾讯云、华为云、阿里云以及国外如亚马逊云认证后&#xff0c;在没有明确就职意向的情况下&#xff0c;选择了ISC2的认证资…

如何用等价类划分法设计测试用例, 来测试程序的日期检查功能?

某学籍排查系统要求学生输入入学日期&#xff0c;日期限制在2008年9月至2012年7月&#xff0c;即系统只能对该段期间内的学籍进行处理&#xff0c;如日期不在此范围内&#xff0c;则显示输入错误信息。系统日期规定由年、月的6位数字 字符组成&#xff0c;前四位代表年&#xf…

多环境 运维

启动dev 同时包含 下面的 MVC DB 做配置时 如果 遇到相同参数 后加载的 覆盖前加载的 先加载 include 的 active 的是最后加载的 如果需要该 dev 需要该很多 include 换成 group 如果 active 是 dev 则加载dev组 如果 active 是pro 则加载pro组 在pom文件中 设置多环境 &l…

[UE][UE5]像素流送,像素流去掉黑边和按钮

[UE]这里写目录标题1.写在前面01.作者碎碎念02.结果演示截图视频教程2.需要准备的软件3.步骤01.准备一个打包好的项目02.启动服务器03.连接!去掉黑边和按钮结尾1.写在前面 01.作者碎碎念 2022.11.19初次更新 俺是不是很粗长&#xff01;老仔细了&#xff0c;全是截图&#xf…

目标检测算法——YOLOv5/YOLOv7改进|结合涨点Trick之ASFF_Detect(自适应空间特征融合)

>>>深度学习Tricks,第一时间送达<<< 🚀🚀🚀NEW!!!魔改YOLOv5/YOLOv7目标检测算法来啦 ~ 💡💡魔法搭配计算机视觉领域各类创新新颖且行之有效的网络结构,平均精度均值mAP涨点明显,实验效果也俱佳。有需要的小伙伴可以在CSDN后台留言+点赞收藏…

Linux环境搭配

Linux环境搭配 文章目录Linux环境搭配1.Linux背景介绍1.1 系统发展史1.2 开源与官方网址1.3 企业Linux应用现状1.4 Linux发行版本2.Linux环境搭配2.1 Linux环境搭配方式2.2 服务器购买2.3 云服务器配置3.Linux远程登陆3.1 Linux桌面3.2 远程登陆工具3.3 Xshell登陆服务器(单用户…

开放式无线运动耳机怎么挑选,适合在运动佩戴的几款耳机推荐

作为一个运动爱好者而言&#xff0c;耳机是可以堪称灵魂伴侣&#xff0c;好比如在健身房运动的时候可以一边戴着耳机&#xff0c;一边在跑步机上刷着剧&#xff0c;不仅能将两小时的需求量直接浓缩为一小时的使用量&#xff0c;想想都觉得自己赚到了&#xff0c;但是在耳机选购…

Windows11 Android开发相关记录(持续更新...)

Windows11 Android开发相关记录&#xff08;持续更新…&#xff09; 本章节主要记录安装好Windos系统后开发环境搭建及其心得。 以及开发常用软件和相关配置。 以下属于个人做法&#xff0c;仅供参考&#xff1a; 文章目录Windows11 Android开发相关记录&#xff08;持续更新…

【计算机网络】Tomcat和Servlet基础知识汇总

目录 1.Tomcat&#xff1a; 2.Servlet&#xff1a; 1.Tomcat&#xff1a; Tomcat是一个HTTP的服务器&#xff0c;本质上就是一个TCP服务器&#xff0c;只不过加上了一些按照HTTP协议格式进行解析/构造这样的代码。学习Tomcat的目的就是能够熟练掌握Tomcat api&#xff0c;基…

公司的这种打包启动方式,我简直惊呆了

前言 大家都知道&#xff0c;SpringBoot应用最终会打出一个Fat Jar, 里面包含了用到的全部依赖&#xff0c;启动也非常简单&#xff0c;java -jar xxx.jar即可。 但是我们公司打出的最终包&#xff0c;将依赖包挪到了外部&#xff0c;然后启动的时候通过loader.path指定依赖包…

第1章 数据库及其表的自动生成与前言

001 RootEntityTkey<Tkey>、BlogArticle RootEntityTkey<Tkey>&#xff1a;该实体类以泛型形式&#xff0c;定义了当前程序中所有实体的自增型主键。 BlogArticle&#xff1a;继承了RootEntityTkey<Tkey>&#xff0c;通过该实体类及其属性成员&#xff0c;用…

基于sklearn的机器学习实战

本文目录如下&#xff1a;LinearRegression线性回归入门数据生成定义模型模型测试与比较多项式回归具体实现LogisticRegression算法思想简述算法实现Decision TreeMLPSVM线性SVM多项式核高斯核对比不同核在Mnist上的效果读取数据高斯核多项式核线性核NBayesbagging与随机森林Ad…

适用于Linux的6个最佳Python IDE

早在 1991 年&#xff0c;当Guido van Rossum第一次引入 Python 时&#xff0c;他不会想到 Python 的未来发展这么好。现在我们在这里规模地使用Python构建项目。根据 2022 年的一份报告&#xff0c;Python 在全球拥有 29.53% 的份额&#xff0c;位居榜首。 Python 的设计牢记…

④开启shift后门实验报告

班级 计科1班 姓名 彭彭头 学号 时间 2022.05.13 成绩 实验项目名称 开启shift后门 实验目的 1、了解常用入侵主机的方法 2、掌握操作系统常见漏洞&#xff0c;并学会防范 实验内容 利用Windows7系统的shift漏洞&#xff0c;开启后门。 实验环境 操作系统&a…

分布式前修课:Zookeeper锁实现方式

前言 聊完MySQL和Redis&#xff0c;我们接下来在聊一聊Zookeeper。相信大家都已经发现了&#xff0c;这些都是我们在开发过程非常常用的技术。搞定他们&#xff0c;一切难题都不在话下。 Zookeeper&#xff0c;盘它 官网是我们学习某一种技术框架的第一手资料&#xff0c;通…

JAVA泛型

泛型的由来 因为JAVA中假如构建了一个object集合&#xff0c;在集合里存储任何的数据类型对象&#xff0c;定义了一个字符串&#xff0c;又定义一个常数。呢么在遍历数组Arraylist的时候&#xff0c;在代码行里并不会报错&#xff0c;但是运行之后会出现ClassCastException异常…

传奇私服开服架设教程 传奇服务端设置教程

首先开区要使用两个必备的软件&#xff1a;DBC2000、传奇引擎&#xff0c;当然也少不了传奇服务端(传奇服务端在论坛免费服务端和商业服务端中有下载)。 先把下载好的服务端解压到D盘或者某个般的根目录(所谓根目录&#xff0c;就是D盘或E盘&#xff0c;不是D盘和E盘的某个文件…