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

第 363 场 LeetCode 周赛题解

A 计算 K 置位下标对应元素的和

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

模拟

class Solution {
public:int pop_cnt(int x) {//求x的二进制表示中的1的位数int res = 0;for (; x; x >>= 1)if (x & 1)res++;return res;}int sumIndicesWithKSetBits(vector<int> &nums, int k) {int res = 0;for (int i = 0; i < nums.size(); i++)if (pop_cnt(i) == k)res += nums[i];return res;}
};

B 让所有学生保持开心的分组方法数

在这里插入图片描述

排序+枚举:首先对数组排序,设选出的学生的元素集合为 { x i } \{x_i\} {xi},未选的学生的元素集合为 { y i } \{y_i\} {yi},则有 m a x { x i } < ∣ { x i } ∣ < m i n { y i } max\{ x_i \} < |\{x_i\}| < min\{ y_i \} max{xi}<{xi}<min{yi},所有若存在选择方案,则选出学生一定是数组的一个前缀,且未选的学生是数组剩余的后缀,枚举可能的前后缀划分情况。

class Solution {
public:int countWays(vector<int> &nums) {sort(nums.begin(), nums.end());int n = nums.size();int res = 0;if (nums[n - 1] < n)//后缀为空res++;if (nums[0] > 0)//前缀为空res++;for (int i = 0; i < n - 1; i++) {//枚举前缀nums[0,i]if (nums[i] < i + 1 && nums[i + 1] > i + 1)res++;}return res;}
};

C 最大合金数

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

二分:因为所有合金都需要由同一台机器制造,所有枚举各台机器,二分查找能制造的最大合金数

class Solution {
public:using ll = long long;int maxNumberOfAlloys(int n, int k, int budget, vector<vector<int>> &composition, vector<int> &stock, vector<int> &cost) {int res = 0;for (auto &li: composition) {int l = 0, r = 3e8;while (l < r) {int mid = (l + r + 1) / 2;ll tmp = 0;for (int i = 0; i < n && tmp <= budget; i++) {if (1LL * mid * li[i] - stock[i] > 0)tmp +=(1LL * mid * li[i] - stock[i]) * cost[i];}if (tmp <= budget)l = mid;elser = mid - 1;}res = max(res, l);}return res;}
};

D 完全子集的最大元素和

在这里插入图片描述

质因数分解+哈希: 一组数字中每对元素的乘积都是一个完全平方数当且仅当数组中每个元素的奇数次质因子的集合相同 (例: 12 = 2 2 × 3 1 12=2^2\times 3^1 12=22×31 75 = 3 1 × 5 2 75=3^1\times 5^2 75=31×52,它们的奇数次质因子的集合都为 { 3 } \{3\} {3}),枚举元素同时更新奇数次质因子的集合对应的元素和。

class Solution {
public:using ll = long long;long long maximumSum(vector<int> &nums) {map<vector<int>, ll> s;ll res = 0;for (int i = 1; i <= nums.size(); i++) {int cur = i;vector<int> t;//cur的奇数次质因子的集合for (int f = 2; f * f <= cur; f++)//质因数分解if (cur % f == 0) {int cnt_f = 0;while (cur % f == 0) {cur /= f;cnt_f++;}if (cnt_f & 1)//f是奇数次质因子t.push_back(f);}if (cur != 1) {t.push_back(cur);}s[t] += nums[i - 1];//更新元素和}res = 0;for (auto &[_, si]: s)res = max(res, si);return res;}
};

http://www.lryc.cn/news/168861.html

相关文章:

  • ffplay源码解析-main入口函数
  • 这些Coding套路你不会还不知道吧?
  • Spring Boot深度解析:快速开发的秘密
  • mysql数据库备份(mysqldump)
  • linux Nginx+Tomcat负载均衡、动静分离
  • ts 枚举类型原理及其应用详解
  • 腾讯mini项目-【指标监控服务重构】2023-08-23
  • C- ssize_t size_t
  • ubuntu20.04 Supervisor 开机自启动脚本一文配置
  • 【面试刷题】——函数指针和指针函数
  • 目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
  • 【100天精通Python】Day61:Python 数据分析_Pandas可视化功能:绘制饼图,箱线图,散点图,散点图矩阵,热力图,面积图等(示例+代码)
  • 2023华为产品测评官-开发者之声 | 华为云CodeArts征文活动,多重好礼邀您发声!
  • Python 图形化界面基础篇:获取文本框中的用户输入
  • 【驱动开发】实现三盏灯的控制,编写应用程序测试
  • Vue3+ElementUI使用
  • MySQL 和 MariaDB 版本管理的历史背景及差异
  • linux驱动开发--day4(字符设备驱动注册内部流程、及实现备文件和设备的绑定下LED灯实验)
  • elasticsearch5-RestAPI操作
  • 数据结构与算法(一)
  • Matlab--微积分问题的计算机求解
  • GRU实现时间序列预测(PyTorch版)
  • 文本框粘贴时兼容Unix、Mac换行符的方法源码
  • 2023年华为杯研究生数学建模竞赛辅导
  • post更新,put相当于删除重新增一条
  • python责任链模式
  • 大数据技术准备
  • 【力扣周赛】第 362 场周赛(⭐差分匹配状态压缩DP矩阵快速幂优化DPKMP)
  • 四大函数式接口(重点,必须掌握)
  • 2023Web前端逻辑面试题