1388. 3n 块披萨
创始人
2024-01-31 15:01:09
0

文章目录

      • 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&slices){int row = static_cast(slices.size());int col = (row+1)/3;vector>dp(row+1,vector(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& slices) {vectora1(slices.begin(),slices.end()-1);vectora2(slices.begin()+1,slices.end());auto num1 = maxSizeSlice(a1);auto num2 = maxSizeSlice(a2);return max(num1,num2); }
};

相关内容

热门资讯

“十五五”开好局起好步丨从“便...   福建、上海等地都在新年第一个工作日召开了优化营商环境专题大会,部署今年的新任务、新目标,优化营商...
这才是中国村味的“顶流”!到贵...   拒绝流量套路,只凭 “乡土味” 出圈!贵州的 “村字号” 为何能让全网上头?带你解锁贵州破圈密码...
专访|“中国汽车品牌的文化独特...   新华社伦敦1月16日电 专访|“中国汽车品牌的文化独特性正逐步显现”——访英国汽车产业专家贝利 ...
新春近 暖汤沸——林芝市工布江...   “刚从雪山脚下过来,泡进这温泉里,浑身的寒气一下就散了!抬头是青山,身旁是热气,这体验太绝了!”...
数读中国开局新活力 | 规模已...   编者按:2026年是“十五五”开局之年。内需市场潜力持续释放,消费新场景不断涌现,文旅融合、冰雪...
​错账更正的方法有哪些 错账更正的方法有哪些在进行任何更正之前,首先要明确的是,所有更正都应基于准确无误的原则来进行。这意味...
​流动比率的分析要点 流动比率的分析要点流动比率=流动资产/流动负债*100%或者[(期初流动资产+期末流动资产)/2]/...
百万医疗险榜:锁定20年的星相... 很多人以为,百万医疗险都差不多,反正都是报销住院费用。但现实往往是,续保问题才是隐形雷区。市面上多数...
​应付票据怎么背书转让 应付票据怎么背书转让应付票据的背书转让方式主要有以下几种:1.全称背书:即将票据背书人的全称写在票据...
普京同伊朗总统通电话   新华社消息,据俄罗斯媒体16日报道,俄罗斯总统普京同伊朗总统佩泽希齐扬通电话。