当前位置: 首页 > news >正文

LeetCode第125场双周赛个人题解

目录

100231. 超过阈值的最少操作数 I

原题链接

思路分析

AC代码

100232. 超过阈值的最少操作数 II

原题链接

思路分析

AC代码

100226. 在带权树网络中统计可连接服务器对数目

原题链接

思路分析

AC代码

100210. 最大节点价值之和

原题链接

思路分析

AC代码


100231. 超过阈值的最少操作数 I

原题链接

超过阈值的最少操作数 I - 力扣 (LeetCode) 竞赛

思路分析

签到题,没啥说的

AC代码

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();}
};

100232. 超过阈值的最少操作数 II

原题链接

100232. 超过阈值的最少操作数 II

思路分析

数组放到小根堆,检测是否全部大于等于k

如果有小于k的,就弹出俩元素,添加新元素

AC代码

class Solution
{
public:int minOperations(vector<int> &nums, int k){long long res = 0, a, b;priority_queue<long long, vector<long long>, greater<long long>> pq;for (auto x : nums)pq.emplace(x);while (pq.top() < k)a = pq.top(), pq.pop(), b = pq.top(), pq.pop(), pq.emplace(a * 2 + b), res++;return res;}
};


100226. 在带权树网络中统计可连接服务器对数目

原题链接

  100226. 在带权树网络中统计可连接服务器对数目

思路分析

枚举中间服务器c,顺序从邻接点往下遍历,假如对某个邻接点遍历,得到可被整除路径数目为tot,之前遍历到的可被整除路径数目为s,那么根据乘法原理,答案要增加tot*s

计算中间服务器c的贡献需要O(N),n个点计算一遍是O(N^2)

AC代码

const int N = 1005, M = N * N;
class Solution
{
public:struct edge{int v, w, nxt;} edges[M];int head[N], idx = 0;void addedge(int u, int v, int w){edges[idx] = {v, w, head[u]}, head[u] = idx++;}vector<int> countPairsOfConnectableServers(vector<vector<int>> &g, int signalSpeed){int n = g.size() + 1, tot = 0;memset(head, -1, sizeof head), idx = 0;vector<int> ret(n);for (auto &e : g)addedge(e[0], e[1], e[2]), addedge(e[1], e[0], e[2]);function<void(int, int, int)> dfs = [&](int u, int fa, long long pre){if ((pre % signalSpeed) == 0)tot++;for (int i = head[u]; ~i; i = edges[i].nxt){int v = edges[i].v;if (v == fa)continue;dfs(v, u, pre + edges[i].w);}};for (int u = 0, s = 0; u < n; u++){s=0;for (int i = head[u], v; ~i; i = edges[i].nxt){tot = 0, v = edges[i].v, dfs(v, u, edges[i].w);ret[u] += s * tot, s += tot;}}return ret;}
};

100210. 最大节点价值之和

原题链接

最大节点价值之和 - 力扣 (LeetCode) 竞赛

思路分析

我们考虑,最终得到的最大数组和原数组相比看,可不可能只有奇数个元素发生变化

答案是不可能,自己可以模拟一下

因此必然有偶数个数发生变化

而对于numi和numj如果发生变化,我们一定可以做到只改变numi和numj而不影响其它元素

只要把路径上的边都操作一遍即可

所以问题就变成了偶数个数目进行异或k后数组的最大和

这个线性dp即可,跟树没关系

AC代码

class Solution {
public:long long maximumValueSum(vector<int>& nums, int k, vector<vector<int>>& edges) {long long f0 = 0, f1 = -1e9, t;for(int x : nums) t = f0, f0 = max(f0 + x, f1 + (x ^ k)), f1 = max(t + (x ^ k), f1 + x);return f0;}
};

相关文章:

  • 飞天使-学以致用-devops知识点4-SpringBoot项目CICD实现(实验失败,了解大概流程)
  • mysql 常用命令练习
  • 初识C语言—常见关键字
  • NLog条件配置——实现将包含某个特定字符串日志写入指定文件
  • 蓝桥杯备战刷题three(自用)
  • MapStruct 教程
  • 【Java面试题】SpringBoot与Spring的区别
  • Programming Abstractions in C阅读笔记:p308-p311
  • 暗九之凶险,更甚于明九
  • K8S部署postgresql
  • Node.js_基础知识(CommonJS模块化)
  • Hololens 2应用开发系列(1)——使用MRTK在Unity中设置混合现实场景并进行程序模拟
  • 23端口登录的Telnet命令+传输协议FTP命令
  • Django 表单
  • 【Git】深入理解 Git 分支合并操作:git merge dev 命令详解
  • 2017前端实习生面试总结
  • C++类的相互关联
  • Cumulo 的 ClojureScript 模块已经成型
  • Docker 笔记(2):Dockerfile
  • express + mock 让前后台并行开发
  • java8-模拟hadoop
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • Python进阶细节
  • vue 个人积累(使用工具,组件)
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 番外篇1:在Windows环境下安装JDK
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 猴子数据域名防封接口降低小说被封的风险
  • 后端_MYSQL
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 前端
  • 前端自动化解决方案
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 使用Gradle第一次构建Java程序
  • 我与Jetbrains的这些年
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • Android开发者必备:推荐一款助力开发的开源APP
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • ​LeetCode解法汇总518. 零钱兑换 II
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • # include “ “ 和 # include < >两者的区别
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #define
  • #include到底该写在哪
  • #预处理和函数的对比以及条件编译
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (9)目标检测_SSD的原理
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (一)基于IDEA的JAVA基础12
  • (一)为什么要选择C++
  • (转)详解PHP处理密码的几种方式
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .NET Framework .NET Core与 .NET 的区别