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

LeetCode 第401场周赛个人题解

100325. 找出 K 秒后拿着球的孩子

原题链接

100325. 找出 K 秒后拿着球的孩子

思路分析

数据很小,暴力或者数学方法都行

数学方法就是对 n - 1做带余除法,看跑了奇数还是偶数趟,余数如何,确定位置

时间复杂度:O(1)

AC代码

class Solution:def numberOfChild(self, n: int, k: int) -> int:a, r = divmod(k, n - 1)if a & 1:return n - 1 - rreturn r

100305. K 秒后第 N 个元素的值

原题链接

100305. K 秒后第 N 个元素的值

思路分析

为了抢时间直接暴力了

时间复杂度O(NK)

AC代码

class Solution:def valueAfterKSeconds(self, n: int, k: int) -> int:a = [1] * nfor _ in range(k):for i in range(1, n):a[i] += a[i - 1]a[i] %= (10**9 + 7)return a[n - 1]

100319. 执行操作可获得的最大总奖励 I

原题链接

100319. 执行操作可获得的最大总奖励 I

思路分析

见下面

AC代码

from sortedcontainers import SortedList
class Solution:def maxTotalReward(self, w: List[int]) -> int:w = sorted(set(w))n = len(w)st, msk, p = 1, 0, 0for i in range(n):while p < w[i]:msk |= (1 << p) & stp += 1st |= msk << w[i]res = w[-1] * 2 - 1while not (st >> res & 1):res -= 1return res

100320. 执行操作可获得的最大总奖励 II

原题链接

100320. 执行操作可获得的最大总奖励 II

思路分析

其实就是01背包,每个数字选或不选

我们将物品升序排序

定义状态f(i, j)为前 i 个数是否能够凑够j

f(i, j) = { f(i, j) | f(i, j - w[i]) } | f(i - 1, j)

只涉及或运算,我们考虑bitset优化

分别记录当前集合的状态f, 和w[i]位之前的状态msk

那么f = f | msk

时间复杂度:O(NM / 64)

略解释一下bitset优化:我们每次都是将当前行的一段状态和上一行的一段状态做或运算,一个一个做太慢了,所以我们用二进制位来表示每一行的每个元素的状态,一个int可以表示32个状态,longlong同理,事实上按题面的数据量来说不一定能过,但是……

AC代码

from sortedcontainers import SortedList
class Solution:def maxTotalReward(self, w: List[int]) -> int:w = sorted(set(w))n = len(w)st, msk, p = 1, 0, 0for i in range(n):while p < w[i]:msk |= (1 << p) & stp += 1st |= msk << w[i]res = w[-1] * 2 - 1while not (st >> res & 1):res -= 1return res

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

相关文章:

  • C#面:请解释web.config⽂件中的重要节点
  • 30分钟吃掉 Pytorch 转 onnx
  • KEIL5如何打开KEIL4的GD工程
  • 大前端技术分类
  • Android AAudio——C API控制音频流(四)
  • 万能嗅探:视频号下载神器
  • python数据分析-ZET财务数据分析
  • Leetcode学习
  • python 列出面板数据所有变量名
  • 知乎网站只让知乎用户看文章,普通人看不了
  • web前端的实习记录:探索、挑战与成长
  • 正则表达式的详解带你认识正则表达式的意义
  • 中国现在最厉害的书法家颜廷利:东方伟大思想家哲学家教育家
  • OS常用操作
  • 【IC验证】03 UVM
  • Jira的原理及应用详解(六)
  • Linux进程间通信之System V
  • 力扣hot100:394. 字符串解码(递归/括号匹配,字符串之间相对顺序)
  • 【C++11】多线程常用知识
  • 详解linux设备下的/dev/null
  • GPT-4 Turbo 和 GPT-4 的区别
  • 基于小波多分辨分析的一维时间序列信号趋势检测与去除(MATLAB R2018a)
  • Linux RedHat7.6操作系统的xfs格式化后,mount不生效
  • 高并发ping多台主机IP
  • 03 Linux 内核数据结构
  • 关于软件调用独显配置指引【笔记】
  • 正大国际期货:什么是主力合约?
  • codeforces round 949 div2
  • 分享美好,高清无阻 - 直播极简联网解决方案
  • 贪心算法-加油站