首页 > 其他分享 ># DP 题目总结

# DP 题目总结

时间:2023-08-18 20:26:07浏览次数:51  
标签:总结 题目 slices int DP 数组 去掉 dp

DP题目总结


1、LC1388. 3n 块披萨

题意:

  • 3n的环形数组,每次取一个数后就删除前后相邻的两个数,问最后取得的总数最大是多少。

分析:

  • 相当于不能取相邻数(打家劫舍问题),但这里是环形的,所以要拆成一个去掉第一个数的数组,一个去掉最后一个数的数组。算两次取最大值

代码

class Solution {
public:
    int maxSizeSlices(vector<int>& slices) {
        int n = slices.size();
        int k = n / 3;
        int dp[n][2][k + 1];
        memset(dp, 0, sizeof(dp));
        int res = 0;

        // 去掉第一个数
        dp[1][1][1] = slices[1];
        for(int i = 2; i < n; ++ i) {
            for(int j = 1; j <= k; ++ j) {
                dp[i][0][j] = max(dp[i - 1][0][j], dp[i - 1][1][j]);
                dp[i][1][j] = dp[i - 1][0][j - 1] + slices[i];
            }
        }
        res = max(res, max(dp[n - 1][0][k], dp[n - 1][1][k]));
        
        //去掉最后一个数
        memset(dp, 0, sizeof(dp));
        dp[0][1][1] = slices[0];
        for(int i = 1; i < n - 1; ++ i) {
            for(int j = 1; j <= k; ++ j) {
                dp[i][0][j] = max(dp[i - 1][0][j], dp[i - 1][1][j]);
                dp[i][1][j] = dp[i - 1][0][j - 1] + slices[i];
            }
        }
        res = max(res, max(dp[n - 2][0][k], dp[n - 2][1][k]));
        return res;
    }
};

标签:总结,题目,slices,int,DP,数组,去掉,dp
From: https://www.cnblogs.com/A-sc/p/17641509.html

相关文章

  • 第三周 周博客总结
     这一周我主要应建民老师的要求观看了天道这个电视剧,对里面的剧情有了一个了解,我也明白老师让我们看这个电视剧对我们编程所带来的好处。我通过观看电视剧知道《天道》是一部备受瞩目的电视剧,它故事情节扣人心弦,演员的演技出色,以及对于价值观和人性的深刻思考,使得这部剧成为了......
  • leetcode1372dp求交错路径长
    bfd+dpunordered_map<TreeNode*,int>d,p;queue<pair<TreeNode*,TreeNode*>>q;intdp(TreeNode*root){d[root]=p[root]=0;q.push({root,nullptr});while(!q.empty()){autox=q.front();q.pop();autoy=x.second();......
  • 质数总结
    试除法判质数算法思想由于算法比较简单,就不再从朴素一步步进行优化了,直接写最终版本一个数n的约数都是成对存在的,且一个位于$\sqrt[2]{n}$前面,一个位于后面。所以只需要判断从2到$\sqrt[2]{n}$的数是不是约数即可代码实现/***线性筛(欧拉筛)核心:一个数只会被它的最小质......
  • 养娃这几年,我给挑选玩具总结了5点依据
    最近我把小店张罗好了,开始给大家团购一些这几年自用过的心水好物。第一次的团品我选择了积木条,上周开团了几款最心水的数学桌游(团期已经到最后1天了哦~),到现在这两款团品都收到了大家的很多好评和反馈。如果能用这些年的经验带大家在花钱的路上少走弯路,就是最让我开心的事情了。因为......
  • 总结python 元组和列表的区别
    python的基本类型中有元组和列表这么俩个,但是这哥俩却比较难于区分,今天就来用简单的实例说明两者的不同。列表:1.使用中括号([])包裹,元素值和个数可变实例:aaa=['sitename','www','pythontab','com']元组:1.使用中括号(())包裹,不可以被更改(尽管他们的内容可以)bbb=['sitename','www','py......
  • DP2515完全兼容MCP2515支持SPI通信的can V2.0B控制器新能源汽车通信应用
    DP2515完全兼容MCP2515支持SPI通信的canV2.0B控制器新能源汽车通信应用说明DP2515是一款独立控制器局域网络(ControllerAreaNetwork,CAN)协议控制器,完全支持CANV2.0B技术规范。该器件能发送和接收标准和扩展数据顿以及远程帧。MCP2515自带的两个验收屏蔽寄存器和六个验收......
  • 技术分享| WebRTC之SDP详解
    一,什么是SDPWebRTC是WebReal-TimeCommunication,即网页实时通信的缩写,是RTC协议的一种Web实现,项目由Google开源,并和IETF和W3C制定了行业标准。WebRTC是点对点通讯,他的通话建立需要交换媒体信息才能建立,媒体信息的载体就是SDP。SDP(SessionDescriptionProtocol)是......
  • 8月18日测试总结
    8月18日测试总结触手(xyx)题目大意:给定\(n\)个柱子,每一次只能刷相邻的\(x\)个柱子,在这\(x\)个柱子中,只能刷到其中高度最低的,问最大的粉刷面积及其最少操作次数思路:首先,用一个单调队列维护可能的操作高度,然后,再用一个单调队列维护当前位置的最终高度,也就是所有操作高度......
  • Oracle——redo+undo总结
    Oracle——redo+undo总结 《Oracle------redo》重做日志文件(redologfile)对数据库来说至关重要,他们是数据库的事务日志;Oracle数据库维护着两类重做日志文件:在线重做日志文件(redo)和归档重做日志文件(archivelog),(归档重做日志文件实际上就是已填满的“旧”在线重做日志......
  • 2023下半年NPDP产品经理国际认证8月19日开班
    产品经理国际资格认证NPDP是新产品开发方面的认证,集理论、方法与实践为一体的全方位的知识体系,为公司组织层级进行规划、决策、执行提供良好的方法体系支撑。  【认证机构】 产品开发与管理协会(PDMA)成立于1979年,是全球范围内产品开发与管理专业人士最杰出的倡导者,协助个人、企业......