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

【力扣周赛】第 363 场周赛(完全平方数和质因数分解)

文章目录

  • 竞赛链接
  • Q1:100031. 计算 K 置位下标对应元素的和
    • 竞赛时代码
    • 写法2——手写二进制中1的数量
  • Q2:100040. 让所有学生保持开心的分组方法数(排序后枚举分界)
    • 竞赛时代码
  • Q3:100033. 最大合金数(二分答案)
    • 竞赛时代码
  • Q4:8041. 完全子集的最大元素和
    • 竞赛时代码——质因数分解+哈希表
    • 解法2——定义core(x)为 x 除去完全平方因子后的剩余结果
  • 成绩记录

竞赛链接

https://leetcode.cn/contest/weekly-contest-363/

Q1:100031. 计算 K 置位下标对应元素的和

https://leetcode.cn/problems/sum-of-values-at-indices-with-k-set-bits/
在这里插入图片描述

提示:
1 <= nums.length <= 1000
1 <= nums[i] <= 10^5
0 <= k <= 10

竞赛时代码

class Solution {public int sumIndicesWithKSetBits(List<Integer> nums, int k) {int ans = 0;for (int i = 0; i < nums.size(); ++i) {if (Integer.bitCount(i) == k) ans += nums.get(i);}return ans;}
}

写法2——手写二进制中1的数量

class Solution {public int sumIndicesWithKSetBits(List<Integer> nums, int k) {int ans = 0;for (int i = 0; i < nums.size(); ++i) {if (cnt(i) == k) ans += nums.get(i);}return ans;}public int cnt(int x) {int res = 0;while (x != 0) {res++;x &= x - 1;}return res;}
}

Q2:100040. 让所有学生保持开心的分组方法数(排序后枚举分界)

https://leetcode.cn/problems/happy-students/description/
在这里插入图片描述
提示:
1 <= nums.length <= 10^5
0 <= nums[i] < nums.length

竞赛时代码

将学生排序后, 一个学生 x 被选了的时候,比它小的一定必须被选;同理一个学生 y 不被选的时候,比它大的一定不能被选。

枚举每个位置,假设 0~i 被选择,i+1~n-1 不被选择。检查是否合理,合理则 ans ++;

class Solution {public int countWays(List<Integer> nums) {// 按题意——一定先选择nums值更小的学生,所以——从小到大排序Collections.sort(nums);int n = nums.size(), ans = 0;if (nums.get(0) > 0) ans++;     // 处理特例是否可以全不选// 枚举选择到每个位置for (int i = 0; i < n; ++i) {  // 检查已经选择人数i+1是否严格大于nums[i]if (i + 1 > nums.get(i)) { // 检查已经选择人数i+1是否严格小于下一个没被选择的学生nums[i+1]  (注意要判断越界)if (i + 1 < n && nums.get(i + 1) <= i + 1) continue;    // 不满足就跳过ans++;  // 这个位置合理,答案+1}}return ans;}
}

Q3:100033. 最大合金数(二分答案)

https://leetcode.cn/problems/maximum-number-of-alloys/description/

在这里插入图片描述
提示:
1 <= n, k <= 100
0 <= budget <= 10^8
composition.length == k
composition[i].length == n
1 <= composition[i][j] <= 100
stock.length == cost.length == n
0 <= stock[i] <= 10^8
1 <= cost[i] <= 100

竞赛时代码

注意到题目中说明——“所有合金都需要由同一台机器制造。”,且观察到 k 的数据范围较小,所以可以枚举使用每台机器。
对于每台机器,使用二分查找求出它可以制造出的最大的合金数量。

二分查找时判断的依据是花费的前有没有在 budget 的范围内。

class Solution {public int maxNumberOfAlloys(int n, int k, int budget, List<List<Integer>> composition, List<Integer> stock, List<Integer> cost) {long ans = 0;// 按照题意,所有合金都需要由同一台机器制造。枚举每个机器。for (int i = 0; i < k; ++i) {ans = Math.max(ans, op(n, budget, composition.get(i), stock, cost));}return (int)ans;}// 计算使用某台机器时的最大制造数量public long op(int n, int budget, List<Integer> composition, List<Integer> stock, List<Integer> cost) {// 二分答案long l = 0, r = (long)Integer.MAX_VALUE;while (l < r) {long mid = l + r + 1 >> 1;if (check(mid, n, budget, composition, stock, cost)) l = mid;else r = mid - 1;}return l;}// 检查是否可以造出 k 个合金public boolean check(long k, int n, int budget, List<Integer> composition, List<Integer> stock, List<Integer> cost) {long s = 0;     // 记录额外花费for (int i = 0; i < n; ++i) {long need = k * composition.get(i);if (need <= stock.get(i)) continue;s += cost.get(i) * (need - stock.get(i));if (s > budget) return false;   // 额外花费超了,不能造出k个合金}return true;}
}

Q4:8041. 完全子集的最大元素和

https://leetcode.cn/problems/maximum-element-sum-of-a-complete-subset-of-indices/description/

在这里插入图片描述
提示:
1 <= n == nums.length <= 10^4
1 <= nums[i] <= 10^9

竞赛时代码——质因数分解+哈希表

对每个下标质因数分解,两两相乘之后的结果是完全平方数,那么这两个数字的质因数分解的奇偶性相同。 例如2=21,8=23;相同质因数出现的次数的奇偶性相同,则两者可以匹配。

根据质因数分解的结果将所有数字分组即可。

class Solution {public long maximumSum(List<Integer> nums) {// 两两之间相乘之后是完全平方数,则质因数分解结果满足各个质因数数量奇偶性相同int n = nums.size();String[] mask = new String[n];long ans = 0;// key是mask,value是sumMap<String, Long> m = new HashMap<>();     for (int i = 1; i <= n; ++i) {mask[i - 1] = op(i);                                        // 计算maskm.merge(mask[i - 1], (long)nums.get(i - 1), Long::sum);     // 求和ans = Math.max(ans, m.get(mask[i - 1]));                    // 更新答案}return ans;}// 计算下标x的质因数分解掩码maskpublic String op(int x) {// 将质因数的数量为奇数的部分记录下来String mask = "";for (int i = 2; i <= x / i; ++i) {if (x % i == 0) {int s = 0;while (x % i == 0) {s++;x /= i;}if (s % 2 == 1) mask += String.valueOf(i) + " ";}}if (x > 1) mask += String.valueOf(x) + " ";return mask;}
}

解法2——定义core(x)为 x 除去完全平方因子后的剩余结果

https://leetcode.cn/problems/maximum-element-sum-of-a-complete-subset-of-indices/solutions/2446037/an-zhao-corei-fen-zu-pythonjavacgo-by-en-i6nu/

计算方式同质因数分解,把 n 的所有出现次数为奇数的质因子相乘,即为 core(n)。

class Solution {public long maximumSum(List<Integer> nums) {// 两两之间相乘之后是完全平方数,则质因数分解结果满足各个质因数数量奇偶性相同int n = nums.size();long[] sum = new long[n + 1];long ans = 0;for (int i = 1; i <= n; ++i) {int c = op(i);                 // 计算masksum[c] += nums.get(i - 1);     // 求和ans = Math.max(ans, sum[c]);   // 更新答案}return ans;}// 计算下标x的质因数分解掩码maskpublic int op(int x) {// 将质因数的数量为奇数的部分记录下来int res = 1;for (int i = 2; i <= x / i; ++i) {if (x % i == 0) {int s = 0;while (x % i == 0) {s++;x /= i;}if (s % 2 == 1) res *= i;}}if (x > 1) res *= x;return res;}
}

成绩记录

在这里插入图片描述
T4 没有那么难!想得慢了!

在这里插入图片描述

相关文章:

【力扣周赛】第 363 场周赛(完全平方数和质因数分解)

文章目录 竞赛链接Q1&#xff1a;100031. 计算 K 置位下标对应元素的和竞赛时代码写法2——手写二进制中1的数量 Q2&#xff1a;100040. 让所有学生保持开心的分组方法数&#xff08;排序后枚举分界&#xff09;竞赛时代码 Q3&#xff1a;100033. 最大合金数&#xff08;二分答…...

RocketMQ的介绍和环境搭建

一、介绍 我也不知道是啥&#xff0c;知道有什么用、怎么用就行了&#xff0c;说到mq&#xff08;MessageQueue&#xff09;就是消息队列&#xff0c;队列是先进先出的一种数据结构&#xff0c;但是RocketMQ不一定是这样&#xff0c;简单的理解一下&#xff0c;就是临时存储的…...

【web开发】7、Django(2)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、部门列表二、部门管理&#xff08;增删改&#xff09;三、用户管理过渡到modelform组件四、modelform实例&#xff1a;靓号操作五、自定义分页组件六、datepick…...

Prometheus+Grafana可视化监控【Nginx状态】

文章目录 一、安装Docker二、安装Nginx(Docker容器方式)三、安装Prometheus四、安装Grafana五、Pronetheus和Grafana相关联六、安装nginx_exporter七、Grafana添加Nginx监控模板 一、安装Docker 注意&#xff1a;我这里使用之前写好脚本进行安装Docker&#xff0c;如果已经有D…...

R 语言的安装教程

一、下载相关软件 1、R 下载 官网&#xff1a;R: The R Project for Statistical Computing 找到中国镜像&#xff0c;下载快 历史版本点击这里 2、Rtools 下载 进入镜像后&#xff0c;点击这里 然后选择与上面下载的R版本相对应的版本即可 3、Rstudio 下载 官网&#xff1…...

uniapp-提现功能(demo)

页面布局 提现页面 有一个输入框 一个提现按钮 一段提现全部的文字 首先用v-model 和data内的数据双向绑定 输入框逻辑分析 输入框的逻辑 为了符合日常输出 所以要对输入框加一些条件限制 因为是提现 所以对输入的字符做筛选,只允许出现小数点和数字 这里用正则实现的小数点…...

Spring 篇

1、什么是 Spring&#xff1f; Spring是一个轻量级的IOC和AOP容器框架。是为Java应用程序提供基础性服务的一套框架&#xff0c;目的是用于简化企业应用程序的开发&#xff0c;它使得开发者只需要关心业务需求。常见的配置方式有三种&#xff1a;基于XML的配置、基于注解的配置…...

three.js简单3D图形的使用

npm init vitelatest //创建一个vite的脚手架 选择 Vanilla 之后自己处理一下 在main.js中写入 // 导入three.js import * as THREE from three// 创建场景 const scene new THREE.Scene();// 创建相机 const camera new THREE.PerspectiveCamera(45, //视角window.inner…...

spark withColumn的使用(笔记)

目录 前言&#xff1a; spark withColumn的语法及使用&#xff1a; 准备源数据演示&#xff1a; 完整实例代码&#xff1a; 前言&#xff1a; withColumn()&#xff1a;是Apache Spark中用于DataFrame操作的函数之一&#xff0c;它的作用是在DataFrame中添加或替换列&#xff…...

PTA:7-1 线性表的合并

线性表的合并 题目输入样例输出样例 代码解析 题目 输入样例 4 7 5 3 11 3 2 6 3输出样例 7 5 3 11 2 6 代码 #include<iostream> #include<vector> using namespace std;bool checkrep(const vector<int>& arr, int x) {for (int element : arr) {i…...

Spring 的创建和日志框架的整合

目录 一、第一个 Spring 项目 1、配置环境 2、Spring 的 jar 包 Maven 项目导入 jar 包和设置国内源的方法&#xff1a; 3、Spring 的配置文件 4、Spring 的核心 API ApplicationContext 4、程序开发 5、细节分析 &#xff08;1&#xff09;名词解释 &#xff08;2&…...

11-集合和学生管理系统

1.ArrayList 集合和数组的优势对比&#xff1a; 长度可变添加数据的时候不需要考虑索引&#xff0c;默认将数据添加到末尾 1.1 ArrayList类概述 什么是集合 ​ 提供一种存储空间可变的存储模型&#xff0c;存储的数据容量可以发生改变 ArrayList集合的特点 ​ 长度可以变化…...

C语言进阶指针(3) ——qsort的实现

大家好&#xff0c;我们今天来学习回调函数qsort的实现。 首先让我们打开cplusplus.com找到qsort函数。 我们看到这个函数就可以看到它的头文件和参数信息。 #include<stdlib.h> void qsort (void* base, size_t num, size_t size, int (*compar)(const void*,const voi…...

Rust源码分析——Rc 和 Weak 源码详解

Rc 和 Weak 源码详解 一个值需要被多个所有者拥有 rust中所有权机制在图这种数据结构中&#xff0c;一个节点可能被多个其它节点所指向。那么如何表示图这种数据结构&#xff1f;在多线程中&#xff0c;多个线程可能会持有同一个数据&#xff1f;如何解决这个问题。 Rc rus…...

【网络编程】深入理解TCP协议二(连接管理机制、WAIT_TIME、滑动窗口、流量控制、拥塞控制)

TCP协议 1.连接管理机制2.再谈WAIT_TIME状态2.1理解WAIT_TIME状态2.2解决TIME_WAIT状态引起的bind失败的方法2.3监听套接字listen第二个参数介绍 3.滑动窗口3.1介绍3.2丢包情况分析 4.流量控制5.拥塞控制5.1介绍5.2慢启动 6.捎带应答、延时应答 1.连接管理机制 正常情况下&…...

社区团购商城小程序v18.1开源独立版+前端

新增后台清理缓存功能 修复定位权限 修复无法删除手机端管理员 11月新登录接口修复&#xff01; 修复商家付款到零钱&#xff0c; 修复会员登陆不显示头像&#xff0c; 修复无法修改会员开添加绑定...

MATLAB入门-字符串操作

MATLAB入门-字符串操作 注&#xff1a;本篇文章是学习笔记&#xff0c;课程链接是&#xff1a;link MATLAB中的字符串特性&#xff1a; 无论是字符还是字符串&#xff0c;都要使用单引号来‘’表示&#xff1b;在MATLAB中&#xff0c;字符都是在矩阵中存储的&#xff0c;无论…...

Kong Learning

一、Kong Kong是由Mashape公司开源的可扩展的Api GateWay项目。它运行在调用Api之前&#xff0c;以插件的扩展方式为Api提供了管理。比如&#xff0c;鉴权、限流、监控、健康检查等&#xff0c;Kong是基于lua语言、nginx以及openResty开发的&#xff0c;所有拥有动态路由、负载…...

Python怎样写桌面程序

要编写Python桌面应用程序&#xff0c;可以使用以下几种方法&#xff1a; 1.使用Tkinter模块&#xff1a;Tkinter是Python自带的GUI工具包之一&#xff0c;可以使用它来创建基本的GUI界面。例如&#xff0c;可以创建一个简单的窗口&#xff0c;添加按钮、文本框等控件&#xf…...

蓝桥杯2023年第十四届省赛真题-平方差--题解

蓝桥杯2023年第十四届省赛真题-平方差 时间限制: 3s 内存限制: 320MB 提交: 2379 解决: 469 题目描述 给定 L, R&#xff0c;问 L ≤ x ≤ R 中有多少个数 x 满足存在整数 y,z 使得 x y2 − z2。 输入格式 输入一行包含两个整数 L, R&#xff0c;用一个空格分隔。 输出格…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比

在机器学习的回归分析中&#xff0c;损失函数的选择对模型性能具有决定性影响。均方误差&#xff08;MSE&#xff09;作为经典的损失函数&#xff0c;在处理干净数据时表现优异&#xff0c;但在面对包含异常值的噪声数据时&#xff0c;其对大误差的二次惩罚机制往往导致模型参数…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)

一、OpenBCI_GUI 项目概述 &#xff08;一&#xff09;项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台&#xff0c;其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言&#xff0c;首次接触 OpenBCI 设备时&#xff0c;往…...

【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅

目录 前言 操作系统与驱动程序 是什么&#xff0c;为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中&#xff0c;我们在使用电子设备时&#xff0c;我们所输入执行的每一条指令最终大多都会作用到硬件上&#xff0c;比如下载一款软件最终会下载到硬盘上&am…...

门静脉高压——表现

一、门静脉高压表现 00:01 1. 门静脉构成 00:13 组成结构&#xff1a;由肠系膜上静脉和脾静脉汇合构成&#xff0c;是肝脏血液供应的主要来源。淤血后果&#xff1a;门静脉淤血会同时导致脾静脉和肠系膜上静脉淤血&#xff0c;引发后续系列症状。 2. 脾大和脾功能亢进 00:46 …...