第 369 场 LeetCode 周赛题解

news2024/11/26 11:34:37

A 找出数组中的 K-or 值

在这里插入图片描述
在这里插入图片描述

模拟

class Solution {
public:
    int findKOr(vector<int> &nums, int k) {
        vector<int> cnt(32);
        for (auto x: nums)
            for (int i = 0; i < 32; i++)
                if (x >> i & 1)
                    cnt[i]++;
        int res = 0;
        for (int i = 0; i < 32; i++)
            if (cnt[i] >= k)
                res |= 1 << i;
        return res;
    }
};

B 数组的最小相等和

在这里插入图片描述

分类讨论:将两个数组中的 0 0 0 看作 1 1 1 求数组替换完后的最小数组和,若两个数组的最小数组和相等返回 0 0 0 ,否则只有最小数组和较小的一个数组存在 0 0 0 有解。

class Solution {
public:
    using ll = long long;

    long long minSum(vector<int> &nums1, vector<int> &nums2) {
        ll s1 = 0, s2 = 0;//两个数组的最小数组和
        bool have1 = false, have2 = false;//两个数组是否含有0
        for (auto x: nums1) {
            if (x)
                s1 += x;
            else {
                have1 = true;
                s1 += 1;
            }
        }
        for (auto x: nums2) {
            if (x)
                s2 += x;
            else {
                have2 = true;
                s2 += 1;
            }
        }
        if (s1 > s2) {
            swap(s1, s2);
            swap(have1, have2);
        }
        if (s1 == s2)
            return s1;

        return have1 ? s2 : -1;
    }
};

C 使数组变美的最小增量运算数

在这里插入图片描述
在这里插入图片描述

动态规划:设 p [ i ] p[i] p[i] 为将 n u m s [ 0 , i ] nums[0,i] nums[0,i] 变为美丽数组且满足 n u m s [ i ] ≥ k nums[i]\ge k nums[i]k 的最小递增运算数,有状态转移方程: p [ i ] = { m a x { k − n u m s [ i ] , 0 } i < 3 m i n { p [ i − 1 ] , p [ i − 2 ] , p [ i − 3 ] } + m a x { k − n u m s [ i ] , 0 } , i ≥ 3 p[i]=\left\{\begin{matrix} max\{k-nums[i],0\} & i<3 \\ min\{p[i-1],p[i-2],p[i-3] \}+max\{k-nums[i],0\} & ,i\ge 3 \end{matrix}\right. p[i]={max{knums[i],0}min{p[i1],p[i2],p[i3]}+max{knums[i],0}i<3,i3

class Solution {
public:
    using ll = long long;

    long long minIncrementOperations(vector<int> &nums, int k) {
        int n = nums.size();
        ll p[n];
        for (int i = 0; i < 3; i++)
            p[i] = max(k - nums[i], 0);
        for (int i = 3; i < n; i++) {
            p[i] = min({p[i - 1], p[i - 2], p[i - 3]}) + max(k - nums[i], 0);
        }
        return min({p[n - 1], p[n - 2], p[n - 3]});
    }
};

D 收集所有金币可获得的最大积分

在这里插入图片描述
在这里插入图片描述
记忆化搜索:设 p [ c u r ] [ c n t ] p[cur][cnt] p[cur][cnt] 为以 c u r cur cur 为根的子树在之前已经使用了 c n t cnt cnt 次第二种方法的情况下可获得的最大积分,有状态转移方程: p [ c u r ] [ c n t ] = m a x { ⌊ c o i n s [ c u r ] 2 c n t ⌋ − k + ∑ j ∈ s o n ( c u r ) p [ j ] [ c n t ] ⌊ c o i n s [ c u r ] 2 c n t + 1 ⌋ + ∑ j ∈ s o n ( c u r ) p [ j ] [ c n t + 1 ] p[cur][cnt]=max\left\{\begin{matrix} \left \lfloor \frac {coins[cur]} {2^{cnt}} \right \rfloor-k + \sum_{j\in son(cur)}p[j][cnt] \\ \left \lfloor \frac {coins[cur]} {2^{cnt+1}} \right \rfloor + \sum_{j\in son(cur)}p[j][cnt+1] \end{matrix}\right. p[cur][cnt]=max 2cntcoins[cur]k+json(cur)p[j][cnt]2cnt+1coins[cur]+json(cur)p[j][cnt+1]

class Solution {
public:
    int maximumPoints(vector<vector<int>> &edges, vector<int> &coins, int k) {
        int n = coins.size();
        vector<int> e[n];
        for (auto &ei: edges) {
            e[ei[0]].push_back(ei[1]);
            e[ei[1]].push_back(ei[0]);
        }
        int M = 16, inf = INT32_MIN;
        int p[n][M];
        for (int i = 0; i < n; i++)
            for (int j = 0; j < M; j++)
                p[i][j] = inf;//初始化标志
        function<int(int, int, int)> dfs = [&](int cur, int cnt, int par) {//记忆化搜索
            if (p[cur][cnt] != inf)
                return p[cur][cnt];
            if (cnt == M - 1)//子树所有数已经为都0,接下来全用第二种方法
                return p[cur][cnt] = 0;
            int r1 = (coins[cur] >> cnt) - k, r2 = coins[cur] >> (cnt + 1);
            for (auto j: e[cur]) {
                if (j == par)
                    continue;
                r1 += dfs(j, cnt, cur);
                r2 += dfs(j, cnt + 1, cur);
            }
            return p[cur][cnt] = max(r1, r2);
        };
        return dfs(0, 0, -1);
    }
};

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

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

相关文章

Elasticsearch:标量量化 101 - scalar quantization 101

作者&#xff1a;BENJAMIN TRENT 什么是标量量化以及它是如何工作的&#xff1f; 大多数嵌入模型输出 float32 向量值。 虽然这提供了最高的保真度&#xff0c;但考虑到向量中实际重要的信息&#xff0c;这是浪费的。 在给定的数据集中&#xff0c;嵌入永远不需要每个单独维度…

微信公众号集成文心一言API

要将微信公众号集成文心一言API&#xff0c;并使用Python语言和Flask技术实现&#xff0c;可以按照以下步骤进行操作&#xff1a; 安装必要的依赖项&#xff1a;首先&#xff0c;确保你的开发环境中已安装了Python和Flask库。你可以使用pip命令来安装它们&#xff0c;例如&…

区块链技术与应用 【全国职业院校技能大赛国赛题目解析】第六套区块链系统部署与运维

第六套区块链系统部署与运维题目 环境 : ubuntu20 fisco : 2.8.0 子任务1-2-1: 搭建区块链系统并验证 题意: P2P起始端口 30500 channel起始端口 20500 JSONRPC 8945 使用Docker配置 使用 build_chain.sh 文件 进行生成节点文件 root@192-168-19-133:/yijiu/mode6# bas…

MySQL数据库#4

外键(表与表之间的关系) 什么是外键&#xff1a; 外键是指关系数据库中一个表中的字段&#xff0c;它与另一个表的主键相关联&#xff0c;用于建立两个表之间的关联关系。外键可以用来确保数据的完整性&#xff0c;通过检查关联表的主键来限制对于某个表的操作。当对主表进行操…

批量去除pdf每一页相同未知的同样的内容

例如我想去除每一页右下角的www.alevelcollege.com ①打开acrobat pro ②编辑文件和图像 ③ctrlF输入字符串www.alevelcollege.com替换为空 ④鼠标点击替换 ⑤回车键按下不放&#xff0c;会自动翻页&#xff0c;直到翻页到最后一页。

Spring Cloud Alibaba 教程 | Nacos 篇

Spring Cloud Alibaba 教程 | Nacos 篇 ​ 写在前面的话&#xff1a; 本笔记在参考网上视频以及博客的基础上&#xff0c;只做个人学习笔记&#xff0c;如有侵权&#xff0c;请联系删除&#xff0c;谢谢&#xff01; 1、使用nacos做服务的注册和发现 1、父工程项目pom <!…

三十九、【进阶】MySQL索引失效情况1

1、在索引列上进行运算操作 &#xff08;1&#xff09;基础表格 phone字段&#xff0c;存在一个单列索引。 &#xff08;2&#xff09;在索引列上进行运算操作 可以看到&#xff0c;在对phone字段进行运算操作之后&#xff0c;查询方式会变为“全表扫描”&#xff0c;导致索引…

【JAVA学习笔记】 51 - 日期类

项目代码 一、第一代日期类 1.Date: 精确到亳秒&#xff0c;代表特定的瞬间 2.SimpleDateFormat:格式和解析日期的类 3.SimpleDateFormat格式化和解析日期的具体类。它允许进行格式化(日期> 文本)、解析(文本->日期)和规范化 public class Date01 {public static voi…

C# Socket通信从入门到精通(5)——单个同步TCP服务器C#代码实现

前言: 我们在开发TCP通信程序时,除了开发TCP客户端程序,有时候我们也需要开发TCP服务器程序,这在实际项目中是经常会遇到的,所以说掌握TCP服务器程序的开发是一项必备的技能,尤其在上位机软件开发领域,掌握TCP服务器程序的开发是走向高级工程师的必经之路,也是面试必考…

山西电力市场日前价格预测【2023-10-30】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2023-10-30&#xff09;山西电力市场全天平均日前电价为309.35元/MWh。其中&#xff0c;最高日前电价为400.33元/MWh&#xff0c;预计出现在18:15。最低日前电价为0.00元/MWh&#xff0c;预计出…

Qt实现卡牌对对碰游戏

效果 闲来无事&#xff0c;实现一个对对碰游戏&#xff0c;卡牌样式是火影动漫。 先上效果&#xff1a; 卡牌对对碰_火影主题 玩法 启动游戏&#xff0c;进入第一关卡&#xff0c;所有卡牌都为未翻开状态&#xff0c;即背面朝上&#xff1b;点击卡牌&#xff0c;则将卡牌翻开…

06、SpringCloud -- 订单详情界面实现

目录 订单详情界面实现需求:代码前端后端controllerservicemapperdomain效果:订单详情界面实现 需求: 现在的订单详情界面是这样的。需要获取订单的数据对这个详情页面进行渲染 代码 前端 后端 controller

C语言基础简述(一)

目录 1. 标准输入输出库 2. 定义变量 3. 关于基本数据类型 3.1 计算机如何存储数据 3.2 基本数据类型 3.2.1 数值类型 3.2.1.1 整数类型 3.2.1.2 浮点数类型 3.2.2 字符类型 3.2.2.1 ASCII表 4. 进制数之间的转换 4.1 十进制整数和二进制之间的相互转换 5. C语言运…

ArcGIS Maps SDK for JS:隐藏地图边框

文章目录 1 问题描述2 解决方案 1 问题描述 近期&#xff0c;将ArcGIS Api for JS v4.16更新到了ArcGIS Maps SDK for JS v4.27&#xff0c;原本去除地图的css代码失效了。 v4.26及以前版本 &#xff0c;需要用.esri-view-surface--inset-outline:focus::after 控制边框属性。…

Photoshop(PS)2021版 安装教程(图文教程超详细)

软件&#xff1a;PS版本&#xff1a;2021语言&#xff1a;简体中文大小&#xff1a;2.26G安装环境&#xff1a;Win11/Win10&#xff08;1809以上版本&#xff09;硬件要求&#xff1a;CPU2.0GHz 内存4G(或更高&#xff0c;不支持7代以下CPU&#xff09;下载通道①百度网盘丨64位…

python随手小练11(南农作业题)

题目1&#xff1a; 计算阶乘的和 可以看出如下形式&#xff1a;12!3!...15! 12(13(14...(15(1)))) 具体操作&#xff1a; x int(input("输入数字&#xff1a;")) res 1 for i in range(x, 1 , -1):res (1 (i * res)) print("阶乘的和为&#xff1a;"…

【SoC基础】通信种类(串口与并口、)

&#x1f4e2;&#xff1a;如果你也对机器人、人工智能感兴趣&#xff0c;看来我们志同道合✨ &#x1f4e2;&#xff1a;不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 &#x1f4e2;&#xff1a;文章若有幸对你有帮助&#xff0c;可点赞 &#x1f44d;…

生活日用品经营小程序商城的作用是什么

生活日用品如牙膏牙刷、护手霜等小产品是人们生活所需&#xff0c;传统客户会通过线下超市商场购买&#xff0c;但现在的消费者往往会选择线上渠道购买&#xff0c;省时省力坐在家里等货上门即可。 因此对商家来说&#xff0c;需要打通线上渠道才能获得更多生意&#xff0c;提…

微信小程序学习(03)

什么是生命周期函数 生命周期函数&#xff1a;是由小程序框架提供的内置函数&#xff0c;会伴随着生命周期&#xff0c;自动按次序执行。 生命周期函数的作用&#xff1a;允许程序员在特定的时间点&#xff0c;执行某些特定的操作。例如&#xff0c;页面刚加载的时候&#xff0…

Hexo + NexT 博客评论系统(Valine)配置小记

这几天刚配置了船新的 Hexo 博客&#xff0c;然后看到使用的 NexT 主题支持很多评论系统。我尝试配置了一下&#xff0c;发现里面坑太多了&#xff0c;真的挺费周章。于是想水一篇分享一下~ 1. 为什么不是…… NexT 主题一共支持如下的几个评论系统&#xff1a; 其中我觉得最…