力扣每日一题(+日常水题|树型dp)

news2024/12/27 19:42:05

740. 删除并获得点数 - 力扣(LeetCode)

简单分析一下:

每一个数字其实只有2个状态选 or 不

可得预处理每一个数初始状态(不选为0,选为所有x的个数 * x)累加即可

for(auto &x : nums)
   dp[x][1] += x;
       

每选一个树 i 删去 i + 1 和 i - 1

故我们可以将 i - 1视为 i 的父节点, i + 1视为 i 的子节点(此时思路就向树形dp经典题"参加舞会"一样如果i节点参与,其子节点和父节点不参与)

可得

 for(int i = 2; i <= n;i++)
        {
            dp[i][1] += dp[i - 1][0];
            dp[i][0] += dp[i - 1][1];
        }

再考虑特殊情况:中间断层 1 5 or 任意不连续数字串 

此时对与5 显然 其没有父节点 和 子节点(无法正常转移)

那么倒退4,我们构建4节点,因为其本身不存在选和不选都不影响最终结果

可得

            if(!dp[i][1])
            {
                dp[i][1] = dp[i][0] = mx;
                continue;
            }

由于每一个节点的权值大小不同,对于第i个节点为true的时候有特殊情况(即选的权值不如不选的情况)

可得

                dp[i][1] = max(dp[i][1] + dp[i - 1][0], dp[i - 1][1]);
                dp[i][0] += dp[i - 1][1];

 

由于题目数据范围为

 

故进行转移时只用转移1e4次即可 

//using i64 = int64_t;
class Solution {
public:
    const int maxn = 1e4 + 10;
    int dp[10010][2];
    int deleteAndEarn(vector<int>& nums) 
    {
        //视为树形dp(easy版)
        //例如:样例一 == >> 2 3 4
        //样例二 == >> 4 9 4    
        memset(dp, 0, sizeof dp);
        for(auto &x : nums)
        dp[x][1] += x;
        int mx = 0;
        for(int i = 1; i <= 10000; i++)
        {
            if(!dp[i][1])
            {
                dp[i][1] = dp[i][0] = mx;
                continue;
            }
            else
            {
                dp[i][1] = max(dp[i][1] + dp[i - 1][0], dp[i - 1][1]);
                dp[i][0] += dp[i - 1][1];
            }
            mx = max({mx,dp[i][1],dp[i][0]});
        }
        return max(dp[10000][1], dp[10000][0]);
    }
};

 时间复杂度:常数级

2251. 花期内花的数目 - 力扣(LeetCode)

  

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

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

相关文章

MySQL8.0版安装教程 + Workbench可视化配置教程(史上最细、一步一图解)

文章目录 一、安装MySQL1、选择版本&#xff0c;点击“Download”进行下载2、双击下载好的安装包&#xff0c;点击运行3、选择安装类型为“Custom”4、依次进行选择&#xff0c;选到MySQL Servers 8.0.33 -X64&#xff0c;点击向右的箭头5、选中MySQL Servers 8.0.33 -X64&…

Allure-pytest功能特性介绍

前言 学pytest就不得不说fixture&#xff0c;fixture是pytest的精髓所在&#xff0c;就像unittest中的setup和teardown一样&#xff0c;如果不学fixture那么使用pytest和使用unittest是没什么区别的(个人理解)。 fixture用途 1.做测试前后的初始化设置&#xff0c;如测试数据准…

TikTok海外扩张:亚马逊的新对手崛起

随着社交媒体和电子商务的融合&#xff0c;TikTok正迅速崭露头角&#xff0c;成为亚马逊等传统电商巨头的潜在竞争对手。这一新兴平台的快速发展引发了广泛的关注&#xff0c;特别是在全球范围内。 在这篇文章中&#xff0c;我们将探讨TikTok海外扩张的战略&#xff0c;以及它…

26606-2011 工业用氰乙酸甲酯 阅读笔记

声明 本文是学习GB-T 26606-2011 工业用氰乙酸甲酯. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了工业用氰乙酸甲酯的要求、试验方法、检验规则、标志、包装、运输、贮存和安全。 本标准适用于以氯乙酸、氰化钠、甲醇等为原料…

uniapp h5 端 router.base设置history后仍有#号

manifest.json文件设置&#xff1a; "h5": { "router": { "base": "./", "mode": "history" }, }按相对路径发行时路由模式强制为hash模式&#xff0c;不支持history模式&#xff08;两者相悖&#xff09;…

FatFS文件系统在MCU上的应用

FatFS文件系统是单片机领域有名的一个文件系统&#xff0c;由于它的轻量级和兼容性&#xff0c;备受MCU开发者青睐。 在实现如U盘文件读写&#xff0c;SD卡的文件读写等工作时&#xff0c;我们往往需要一个文件系统来支持我们的工作。特别在一些MCU应用中&#xff0c;文件系统…

[React] Context上下文的使用

文章目录 1.Context的介绍2.为什么需要Context3.Context的使用 1.Context的介绍 Context旨在为React复杂嵌套的各个组件提供一个生命周期内的统一属性访问对象&#xff0c;从而避免我们出现当出现复杂嵌套结构的组件需要一层层通过属性传递值得问题。 Context是为了提供一个组…

大语言模型之十三 LLama2中文推理

在《大语言模型之十二 SentencePiece扩充LLama2中文词汇》一文中已经扩充好了中文词汇表&#xff0c;接下来就是使用整理的中文语料对模型进行预训练了。这里先跳过预训练环节。先试用已经训练好的模型&#xff0c;看看如何推理。 合并模型 这一步骤会合并LoRA权重&#xff0…

有没有项目经理能看得懂这九张图?求挑战

大家好&#xff0c;我是老原。 跟项目经理们聊天&#xff0c;经常能听到这样的话&#xff1a; “我是项目经理&#xff0c;除了项目管理的事情外&#xff0c;还要好多事情我得亲自去做。” “项目经理责任大&#xff0c;权力少&#xff0c;真的太累了。” 作为一个项目经理…

DevSecOps 将会嵌入 DevOps

通常人们在一个项目行将结束时才会考虑到安全&#xff0c;这么做会导致很多问题&#xff1b;将安全融入到DevOps的工作流中已产生了积极结果。 DevSecOps&#xff1a;安全正当时 一直以来&#xff0c;开发人员在构建软件时认为功能需求优先于安全。虽然安全编码实践起着重要作…

C#生成自定义海报

安装包 SixLabors.ImageSharp.Drawing 2.0 需要的字体&#xff1a;宋体和微软雅黑 商用的需要授权如果商业使用可以使用方正书宋、方正黑体&#xff0c;他们可以免费商用 方正官网 代码 using SixLabors.Fonts; using SixLabors.ImageSharp; using SixLabors.ImageSharp.Draw…

win10默认浏览器改不了怎么办,解决方法详解

win10默认浏览器改不了怎么办&#xff0c;解决方法详解_蓝天网络 在使用Windows 10操作系统时&#xff0c;你可能会遇到无法更改默认浏览器的情况。这可能是因为其他程序或设置正在干扰更改。如果你也遇到了这个问题&#xff0c;不要担心&#xff0c;本文将为你提供详细的解决…

【小笔记】面对一个没搞过的任务,如何选择合适的算法模型?

【学而不思则罔&#xff0c;思而不学则殆】 9.28 1.确定问题定义 确定要解决的问题是一个什么类型&#xff0c;在算法中有没有一个专业的任务名定义它&#xff0c;确定了问题类型就明确了问题解决方向。 有时候我们要解决的问题可能有多种解决问题的角度&#xff0c;此时可能…

Java | CMD命令认识Java

文章目录 1. CMD命令2. Java概念1.1 Java是什么&#xff1f;1.2下载和安装1.2.1 下载1.2.2 安装1.2.3 JDK的安装目录介绍 1.3 Java语言的发展1.4 Java的三大平台1.4.1 JavaSE1.4.2 JavaME1.4.3 JavaEE 1.5 Java的主要特性1.5.1 Java语言跨平台的原理 1.6 Java中认识 JRE 和 JDK…

文明城市美丽乡村随手拍小程序开源版开发

文明城市美丽乡村随手拍小程序开源版开发 拍照功能&#xff1a;用户可以通过小程序直接打开手机相机&#xff0c;拍摄当前所见的城市或乡村美景。 美化照片功能&#xff1a;用户可以在拍摄或选择的照片上进行美化处理&#xff0c;如调整亮度、对比度、饱和度&#xff0c;添加滤…

为什么通配符SSL证书如此受欢迎?

SSL证书是网站安全的重要保障&#xff0c;而通配符SSL证书更是其中的一种。那么&#xff0c;通配符SSL证书有哪些作用呢&#xff1f;为什么通配符SSL证书如此受欢迎呢&#xff1f;下面&#xff0c;我们就来一起探讨一下。 通配符SSL证书的作用有哪些&#xff1f; 通配符SSL证书…

如何管理好公司的公海客户呢?

销售周期比较长&#xff0c;线索处理比较繁琐&#xff0c;想知道用哪些系统可解决这一问题&#xff1f; 很简单&#xff0c;针对客户管理繁杂&#xff0c;线索复杂的问题&#xff0c;crm系统中的公海池就可以轻松解决。 接下来我将以简道云为例为大家进行详细的公海池介绍 ht…

美容店预约小程序搭建流程

随着科技的不断发展&#xff0c;小程序已经成为了人们生活中不可或缺的一部分。对于美容店来说&#xff0c;搭建一个预约小程序不仅可以提高工作效率&#xff0c;还可以增加客户数量、提高服务质量。那么&#xff0c;如何搭建一个美容店预约小程序呢&#xff1f;本文将为你详细…

计算机竞赛 深度学习大数据物流平台 python

文章目录 0 前言1 课题背景2 物流大数据平台的架构与设计3 智能车货匹配推荐算法的实现**1\. 问题陈述****2\. 算法模型**3\. 模型构建总览 **4 司机标签体系的搭建及算法****1\. 冷启动**2\. LSTM多标签模型算法 5 货运价格预测6 总结7 部分核心代码8 最后 0 前言 &#x1f5…

【N年测试总结】区块链行业测试特点

一、区块链业务系统简介 转入转出业务&#xff1a;这类业务一般会涉及币的转入和转出&#xff0c;转入的流程一般是用户从第三方钱包往用户在公司的地址转入&#xff0c;系统收到用户的转入操作消息通知后&#xff0c;定时在链上监控该地址相关的交易&#xff0c;通过校验各项…