2023-08-18力扣每日一题

链接:

1388. 3n 块披萨

题意:

一个长度3n的环,选n次数字,每次选完以后相邻的数字会消失,求选取结果最大值

解:

这波是~~(ctrl)CV工程师了~~

核心思想是选取n个不相邻 的元素一定合法,我推不出来,猜一猜倒是可以O.o

DP[i][j]表示从[0,i]中选取j个数字的最大值

初始条件,我们可以确定,如果选择0个数字j==0则结果为0;如果j<i+1,,则要在不足的数字中进行选取,我们设为0(官方是设为INT_MIN,我写了0好像也没事,可能是数据弱了?);由于思想中只对相邻数字做判断,所以我们提供[0,0]和[0,1]选取1个数字的值作为DP的初始条件之一,即dp[0][1]=temp[0] 和 dp[1][1]=max(temp[0],temp[1])

剩下的就很简单了,状态转移就是从小的范围推导出大的范围,少的选取推导出多的选取,每个DP[I][J]只需要判断I选不选就行

特别注意的是,由于整体成环状,所以分别对去掉头和去掉尾进行一次DP(因为只考虑相邻)

只要能推出取n个不相邻的数字就能满足题意就很好写了

实际代码:

c++ 复制代码
#include<bits/stdc++.h>
using namespace std;
int solve(vector<int>& temp)
{
    int num=temp.size(),need=(num+1)/3;
    vector<vector<int>>dp(num,vector<int>(need+1,0));
    dp[0][1]=temp[0];
    dp[1][1]=max(temp[0],temp[1]);
    
    for(int i=2;i<num;i++)
    {
        for(int j=1;j<=need;j++)
        {
            dp[i][j] = max(dp[i - 1][j],dp[i - 2][j - 1]+temp[i]);
        }
    }
    return dp[num-1][need];
}
int maxSizeSlices(vector<int>& slices)
{
    int lg=slices.size();
    vector<int> v1(slices.begin() + 1, slices.end());
    vector<int> v2(slices.begin(), slices.end() - 1);
    
    return max(solve(v1),solve(v2));
}
int main()
{
    vector<int> slices;int slice;
    while(cin>>slice) slices.push_back(slice);
    int ans=maxSizeSlices(slices);
    cout<<ans<<endl;
    return 0;
}

限制:

  • 1 <= slices.length <= 500
  • slices.length % 3 == 0
  • 1 <= slices[i] <= 1000
相关推荐
尽兴-30 分钟前
2.1 向量基础:Embedding、余弦相似度、欧氏距离、向量检索
算法·embedding·欧氏距离·向量检索·余弦相似度
Black蜡笔小新1 小时前
自动化AI算法训练服务器DLTM训推一体工作站赋能多行业智能化升级
人工智能·算法·自动化
怪兽学LLM1 小时前
LeetCode 438 找到字符串中所有字母异位词(Python 固定滑动窗口+字符计数解法)
python·算法·leetcode
满怀冰雪1 小时前
第04篇-双指针算法-从有序数组到回文判断的高频解法
java·算法
CC数学建模1 小时前
2026年江西省研究生数学建模竞赛1题:空间数据分析中的过拟合识别完整思路、代码、模型、文章,全网首发高质量分享!
python·算法·数学建模
leo__5201 小时前
MATLAB实现牧羊人算法
开发语言·算法·matlab
Gauss松鼠会2 小时前
【GaussDB】GaussDB SMP特性调优详解
java·服务器·前端·数据库·sql·算法·gaussdb
Tisfy2 小时前
LeetCode 3689.最大子数组总值 I:What The Medium
算法·leetcode·题解·贪心·模拟·脑筋急转弯
葬送的代码人生2 小时前
JavaScript 数组完全指南:从入门到实战
前端·javascript·算法
春日见2 小时前
决策规划控制面经汇总
人工智能·深度学习·算法·机器学习·自动驾驶