第 125 场 LeetCode 双周赛题解

A leetcode.cn/problems/minimum-operations-to-exceed-threshold-value-i/description/" rel="nofollow">超过阈值的最少操作数 I

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

排序然后查找第一个大于等于 k 的元素所在的位置

class Solution {
public:
    int minOperations(vector<int> &nums, int k) {
        sort(nums.begin(), nums.end());
        return lower_bound(nums.begin(), nums.end(), k) - nums.begin();
    }
};

B leetcode.cn/problems/minimum-operations-to-exceed-threshold-value-ii/description/" rel="nofollow">超过阈值的最少操作数 II

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

模拟:用最小堆维护数组中的最小元素

class Solution {
public:
    int minOperations(vector<int> &nums, int k) {
        priority_queue<long long, vector<long long>, greater<long long>> heap;
        for (auto x: nums)
            heap.push(x);
        int res = 0;
        while (heap.size() > 1 && heap.top() < k) {
            res++;
            int x = heap.top();
            heap.pop();
            int y = heap.top();
            heap.pop();
            heap.push(2LL * min(x, y) + max(x, y));
        }
        return res;
    }
};

C leetcode.cn/problems/count-pairs-of-connectable-servers-in-a-weighted-tree-network/description/" rel="nofollow">在带权树网络中统计可连接服务器对数目

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

dfs:枚举 c c c ,以 c c c 的各邻接点为源点进行 d f s dfs dfs ,设各次 d f s dfs dfs 过程中路径和可以被 s i g n a l S p e e d signalSpeed signalSpeed 整除的节点数目为 a 1 , ⋯   , a k a_1,\cdots,a_k a1,,ak,则通过 c c c 可连接的服务器对的数目为 ∑ 1 ≤ i < j ≤ k a i a j \sum_{1\le i<j\le k }a_ia_j 1i<jkaiaj

class Solution {
public:
    vector<int> countPairsOfConnectableServers(vector<vector<int>> &edges, int signalSpeed) {
        int n = edges.size() + 1;
        vector<pair<int, int>> e[n];
        for (auto &ei: edges) {
            e[ei[0]].emplace_back(ei[1], ei[2]);
            e[ei[1]].emplace_back(ei[0], ei[2]);
        }
        int cnt;
        function<void(int, int, int)> dfs = [&](int cur, int pre, int ps) {//当前路径和为ps
            if (ps % signalSpeed == 0)
                cnt++;
            for (auto &[j, w]: e[cur])
                if (j != pre)
                    dfs(j, cur, ps + w);
        };
        vector<int> res(n);
        for (int r = 0; r < n; r++) {
            int s = 0;//a_1+...+a_(j-1)
            for (auto &[j, w]: e[r]) {
                cnt = 0;//a_j
                dfs(j, r, w);
                res[r] += s * cnt;
                s += cnt;
            }
        }
        return res;
    }
};

D leetcode.cn/problems/find-the-maximum-sum-of-node-values/description/" rel="nofollow">最大节点价值之和

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

思维 + 贪心:考虑对树上的一条路径的各边进行操作时,相当于只对路径的两段点进行了异或操作,所以等价于每次操作可以对任意两点进行。将 n u m s [ i ] ∧ k − n u m s [ i ] nums[i]\wedge k -nums[i] nums[i]knums[i] 按降序排序,然后两两一组进行操作,直到只剩一个元素或两个一组之和小于等于 0 0 0

class Solution {
public:
    long long maximumValueSum(vector<int> &nums, int k, vector<vector<int>> &edges) {
        vector<int> li;
        for (auto x: nums)
            li.push_back((x ^ k) - x);
        sort(li.begin(), li.end(), greater<int>());//降序排序
        long long res = accumulate(nums.begin(), nums.end(), 0LL);//原数组元素和
        long long d = 0;
        for (int i = 0; i + 1 < li.size(); i += 2)
            if (li[i] + li[i + 1] > 0) {//两两一组地进行操作
                d += li[i] + li[i + 1];
            } else
                break;
        return res + d;
    }
};

http://www.niftyadmin.cn/n/5407272.html

相关文章

分享一个水表数据传输方案

目录 分享一个水表数据传输方案介绍方案设计硬件设备数据传输流程 代码案例水表传感器代码示例&#xff08;基于Arduino&#xff09;LoRaWAN网关代码示例 实际解决方案结语 分享一个水表数据传输方案 水表数据传输在水务管理中扮演着重要角色。本文将介绍一种基于LoRaWAN的水表…

2024年软考重大改革

目前陕西官网公布了&#xff1a; 全国计算机专业技术资格&#xff08;水平&#xff09;考试陕西网 考试日期 考试级别 考试资格名称 2024年上半年 5月25日&#xff5e;28日 高级 系统分析师 系统架构设计师 信息系统项目管理师 中级 软件设计师 网络工程师 软件评测…

Window系统搭建feishu-chatgpt企业AI机器人并实现无公网ip远程连接

文章目录 前言环境列表1.飞书设置2.克隆feishu-chatgpt项目3.配置config.yaml文件4.运行feishu-chatgpt项目5.安装cpolar内网穿透6.固定公网地址7.机器人权限配置8.创建版本9.创建测试企业10. 机器人测试 前言 在飞书中创建chatGPT机器人并且对话&#xff0c;在下面操作步骤中…

42、网络编程/多点通信和域套接字通信模型20240304

一、多点通信之广播的收发端实现 1.广播发送端代码&#xff1a; #include<myhead.h>int main(int argc, const char *argv[]) {int sfdsocket(AF_INET,SOCK_DGRAM,0);//创建套接字if(sfd-1){perror("socket,error");return -1;}int broadcast1;//设置套接字广…

程序员如何选择职业赛道?

程序员如何选择职业赛道&#xff1f; 程序员在选择职业赛道时通常会考虑自己的兴趣、技能、职业目标以及市场需求等因素。以下是一些建议&#xff1a; 1. 确定职业目标&#xff1a;首先要明确自己的职业目标&#xff0c;是想成为一名前端工程师、后端工程师、数据分析师、产品…

大厂报价查询系统性能优化之道!

0 前言 机票查询系统&#xff0c;日均亿级流量&#xff0c;要求高吞吐&#xff0c;低延迟架构设计。提升缓存的效率以及实时计算模块长尾延迟&#xff0c;成为制约机票查询系统性能关键。本文介绍机票查询系统在缓存和实时计算两个领域的架构提升。 1 机票搜索服务概述 1.1 …

动态规划(算法竞赛、蓝桥杯)--线性DP大盗阿福

1、B站视频链接&#xff1a;E21 线性DP 大盗阿福_哔哩哔哩_bilibili #include <bits/stdc.h> using namespace std; const int N100010; int w[N],f[N]; int main(){int n,t;scanf("%d",&t);while(t--){scanf("%d",&n);for(int i1;i<n;i…

前后端分离项目Docker部署指南(上)

目录 前言 一.搭建局域网 1.搭建net-ry局域网&#xff0c;用于部署若依项目 2.注意点 二.安装redis 创建目录 将容器进行挂载 ​编辑 测试是否安装成功 ​编辑 三. 安装MySQL 创建文件夹 上传配置文件并且修改 .启动MySQL容器服务 充许远程连接 四.部署后端 使用…