力扣 第 399 场周赛 解题报告 | 珂学家 | 调和级数 + 分块DP
前言
T1. 优质数对的总数 I
题型: 签到
class Solution:def numberOfPairs(self, nums1: List[int], nums2: List[int], k: int) -> int:res = 0for v1 in nums1:for v2 in nums2:if v1 % (v2 * k) == 0:res += 1return res
T2. 压缩字符串 III
思路: 模拟
感觉引入一个栈,操作更加的方便
当然加限制的分组循环也可以
class Solution:def compressedString(self, word: str) -> str:stk = []for i, c in enumerate(word):if len(stk) == 0 or stk[-1][0] != c or stk[-1][1] == 9:stk.append([c, 1])else:stk[-1][1] += 1return ''.join(map(lambda x: str(x[1]) + x[0], stk))
T3. 优质数对的总数 II
思路: 调和级数
很典的结论题,时间复杂度为 O ( n l o g n ) O(nlogn) O(nlogn)
∑ i = 1 i = n 1 / i = l o g ( n ) \sum_{i=1}^{i=n} 1/i = log(n) i=1∑i=n1/i=log(n)
class Solution:def numberOfPairs(self, nums1: List[int], nums2: List[int], k: int) -> int: mp1 = Counter()for v in nums1:if v % k == 0:mp1[v//k] += 1if len(mp1) == 0:return 0mz = max(mp1.keys())res = 0mp2 = Counter(nums2)for (k1, v1) in mp2.items():for i in range(1, mz // k1 + 1):res += v1 * mp1[i * k1]return res
T4. 不包含相邻元素的子序列的最大和
思路: 分块 + DP
因为数据规模不大, O ( n ∗ q ) O(\sqrt{n} * q) O(n∗q) 在合理的范围内
所以用分块,思路更加的纯朴和简洁。
每次更新块大小内的状态
然后按块间重算最后的整体解
DP 引入块状态, 表示首尾的0-1状态
具体来讲

class Solution {static long inf = Long.MIN_VALUE / 10;static class Block {int l, r;int[] arr;long[][][] pre;int n;public Block(int l, int r, int[] arr) {this.l = l;this.r = r;this.arr = arr;this.n = r - l + 1;pre = new long[n][2][2];}public void modify() {pre[0][0][0] = 0;pre[0][0][1] = inf;pre[0][1][0] = inf;pre[0][1][1] = arr[l];for (int i = 1; i < n; i++) {pre[i][0][0] = Math.max(pre[i - 1][0][0], pre[i - 1][0][1]);pre[i][1][0] = Math.max(pre[i - 1][1][0], pre[i - 1][1][1]);pre[i][0][1] = pre[i - 1][0][0] + arr[l + i];pre[i][1][1] = pre[i - 1][1][0] + arr[l + i];}}long[][] val() {return pre[n - 1];}}public int maximumSumSubsequence(int[] nums, int[][] queries) {int n = nums.length;int z = (int)Math.sqrt(n);int m = (n + z - 1) / z;Block[] blocks = new Block[m];for (int i = 0; i < m; i++) {blocks[i] = new Block(i * z, Math.min((i + 1) * z - 1, n - 1), nums);blocks[i].modify();}long mod = (long)1e9 + 7;long res = 0;for (int i = 0; i < queries.length; i++) {int[] q = queries[i];int p = q[0], x = q[1];int idx = p / z;nums[p] = x;blocks[idx].modify();long[][] dp = new long[m][2];dp[0][0] = Math.max(blocks[0].val()[0][0], blocks[0].val()[1][0]);dp[0][1] = Math.max(blocks[0].val()[0][1], blocks[0].val()[1][1]);for (int j = 1; j < m; j++) {long[][] next = blocks[j].val();dp[j][0] = Math.max(dp[j - 1][0] + Math.max(next[0][0], next[1][0]), dp[j - 1][1] + next[0][0]);dp[j][1] = Math.max(dp[j - 1][0] + Math.max(next[0][1], next[1][1]), dp[j - 1][1] + next[0][1]);}long tmp = Math.max(dp[m - 1][0], dp[m - 1][1]);res = (res + tmp) % mod;res = (res % mod + mod) % mod;}return (int)res;}
}
写在最后

相关文章:
力扣 第 399 场周赛 解题报告 | 珂学家 | 调和级数 + 分块DP
前言 T1. 优质数对的总数 I 题型: 签到 class Solution:def numberOfPairs(self, nums1: List[int], nums2: List[int], k: int) -> int:res 0for v1 in nums1:for v2 in nums2:if v1 % (v2 * k) 0:res 1return resT2. 压缩字符串 III 思路: 模拟 感觉引入一个栈&…...
Redis的下载、安装、启动和初尝试【超级简单】
redis最好是在Linux系统中使用,这是最接近生产实际的环境。 不过,我们初学者,目的是学习Redis的使用、原理,如果在Linux下直接学习Redis,很可能会因为命令不熟悉而劝退,这是不好的。 因此,我主张…...
v-cloak 用于在 Vue 实例渲染完成之前隐藏绑定的元素
如果你是后端开发者(php),在接触一些vue2开发的后台时,会发现有这段代码: # CDN <script src"https://cdn.jsdelivr.net/npm/vue2/dist/vue.js"></script> # 或 <script src"https://cd…...
港股:并不意外的获利了结
中金公司表示,风险偏好驱动的反弹已经较为充分,分歧和获利了结也不意外。接下来或在当前水平震荡盘整,等待更多催化剂。 在持续一个月的大涨后,港股市场上周出现明显回调。此前我们多次提示,市场已经超买,情…...
Python项目开发实战:工厂库存管理系统(案例教程)
一、项目背景与意义 随着制造业的快速发展,工厂库存管理成为了企业运营中不可或缺的一部分。一个高效的库存管理系统能够确保物料供应的及时性、降低库存成本、提高生产效率。因此,我们决定使用Python开发一个工厂库存管理系统,以满足工厂日常库存管理的需求。 二、系统需求…...
VS2022 嘿嘿
还是大二的时候就开始用这个,但居然是为了用PB,-_-|| 用了段时间换成了C#,依稀还记得大佬们纠正我的读法,别读C井,应该读C夏普。。。 安装过程其实也没啥,就是关键Key得花时间找,我好不容易搞…...
Flutter 中的 PhysicalShape 小部件:全面指南
Flutter 中的 PhysicalShape 小部件:全面指南 在Flutter中,PhysicalShape小部件是一个能够为子组件添加物理效果的边框和阴影的装饰性小部件。它能够模拟真实世界中物体的立体感,通过在子组件的周围创建一个可自定义的形状,并添加…...
CAD二次开发(6)-用户交互之选择集
1. 简单测试 测试让选中的图形描红 [CommandMethod("SeleDemo")]public void SeleDemo(){Database db HostApplicationServices.WorkingDatabase;Editor ed Application.DocumentManager.MdiActiveDocument.Editor;PromptSelectionResult psr ed.GetSelection();…...
如何使用性能监控工具分析JVM性能瓶颈
1、jConsole: jConsole是JDK自带的Java监控和管理控制台。它提供了一个图形用户界面(GUI),用于监控和管理Java应用程序的性能和资源消耗。 使用方法:打开jdk\bin\jconsole.exe,连接到正在运行的Java进程&a…...
解决vite打包只生成了一个css和js文件问题
文章目录 1. 打包遇到的问题2. 问题原因及修改3. 调整后再次打包🆗 1. 打包遇到的问题 今天整了一个项目,试了下打包,发下打包后只生成了一个css文件,和一个js文件, 这样肯定是不行的,因为这样这个文件的包…...
数据访问层设计_4.灵活运用XML Schema
1.XML Schema XML Schema用来描述XML文档合法结构、内容和限制。XML Schema由XML1.0自描述,并且使用了命名空间,有丰富的内嵌数据类型及其强大的数据结构定义功能,充分地改造了并且极大地扩展了DTDs(传统描述XML文档结构和内容限…...
【Linux安全】Firewalld防火墙基础
目录 一、Firewalld概述 二、Firewalld和iptables的关系 三、Firewalld网络区域 1、firewalld防火墙预定义了9个区域: 2、firewalld 数据包处理原则 3、firewalld数据处理流程 4、firewalld检查数据包的源地址的规则 四、Firewalld防火墙的配置方法 1、firewalld 命令…...
先进制造aps专题八 基于ai大模型的ai超级应用,ai生管
目前正在研发的面向消费者的ai超级应用有ai文员,ai教师,ai家教,ai护士,ai翻译 而ai生管无疑是面向制造业的ai超级应用 从商业角度来说,ai生管,必然是aps公司必然要研发的ai超级应用...
Textual for Mac:轻量级IRC客户端
在寻找一款高效、轻量级的IRC客户端时,Textual for Mac无疑是你的不二之选。它集成了众多现代技术,如本机IPv6、最新的IRCv3规范,以及客户端证书身份验证,让你的聊天体验更加顺畅和安全。 Textual for Mac v7.2.2免激活版下载 Tex…...
Facebook:连接世界,畅游社交之旅
作为全球最大的社交平台之一,Facebook不仅仅是一个网站,更是一个连接世界的桥梁,让人们可以轻松地与全球各地的朋友、家人和同事保持联系,分享生活、交流想法,畅游社交的无边界之旅。本文将带领读者探索Facebook的魅力…...
部署PIM-SM
拓扑图 配置 使能组播路由 配置OSPF 组播路由器接口配置pim-sm 连接组成员的接口使能igmp pim路由器上配置静态RP sysname AR1 # multicast routing-enable # interface GigabitEthernet0/0/0ip address 10.1.12.1 255.255.255.0 pim sm # interface GigabitEthernet0/0/…...
一分钟揭秘面试官真实意图,稳拿offer的面试秘诀!
想要在面试中脱颖而出,顺利获得心仪的offer吗?那么,你需要了解面试官背后的潜台词。通过解析这些潜台词,你将能更准确地把握面试官的期望,并给出他们最喜欢的回答。下面,就让我们一起揭开这层神秘的面纱&am…...
【源码】2024心悦搜剧源码百万级网盘资源
1、一键转存他人链接:就是将别人的分享链接转为你自己的 2、转存心悦搜剧资源:就是将心悦搜剧平台上的所有资源都转成你自己的 3、每日自动更新:自动转存每天的资源并入库 前端uin-app,后端PHP,兼容微信小程序...
燃数科技前端25-40K*14薪一面超简单,下周二面啦
文章末尾扫描二维码领取地址 一面 1、自我介绍 2、低代码如何设计的 3、react路由原理 4、react生命周期 5、什么是回调地狱,如何解决 6、jwt和session有什么区别 7、js文件相互引用有什么问题?如何解决 8、一个很大的json文件…...
读人工智能时代与人类未来笔记14_管控人工智能
1. 管控人工智能 1.1. 历史上的战场进一步推进到与数字网络相连的所有地方 1.2. 数字程序现在控制着一个由众多实体系统构成的庞大且仍在不断增长的领域,而且越来越多的此类系统已实现网络化 1.2.1. 在某些情况下甚至连门锁和冰箱都实现了网络化 1.2.2. 这催生出…...
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...
Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...
【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
jmeter聚合报告中参数详解
sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...
深入理解Optional:处理空指针异常
1. 使用Optional处理可能为空的集合 在Java开发中,集合判空是一个常见但容易出错的场景。传统方式虽然可行,但存在一些潜在问题: // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...

