[LeetCode周赛复盘] 第 99 场双周赛20230304

news2025/7/18 21:28:07

[LeetCode周赛复盘] 第 99 场双周赛20230304

    • 一、本周周赛总结
    • 二、 [Easy] 2578. 最小和分割
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 三、[Medium] 2579. 统计染色格子数
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 四、[Medium] 2580. 统计将重叠区间合并成组的方案数
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 五、[Hard] 2581. 统计可能的树根数目
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 六、参考链接

一、本周周赛总结

  • T1 贪心。
  • T2 数学/dp。
  • T3 线段合并/快速幂取模。
  • T4 换根DP。

二、 [Easy] 2578. 最小和分割

链接: 2578. 最小和分割

1. 题目描述

在这里插入图片描述

2. 思路分析

  • 这题如果不写暴力枚举的话,是个贪心,想了好一会。
  • 排序后奇偶交错分配即可。
  • 枚举的话,状压枚举可能写的更快一些。

3. 代码实现

class Solution:
    def splitNum(self, num: int) -> int:              
        s = []
        for c in str(num):
            if c != '0':
                s.append(c)
        s = sorted(s)
        n = len(s)
        h = n // 2
        a = []
        b = []
        for i,c in enumerate(s):
            if i & 1:
                b.append(c)
            else:
                a.append(c)
        x = int('0'+''.join(a))
        y = int('0'+''.join(b))
        return x + y 

三、[Medium] 2579. 统计染色格子数

链接: 2579. 统计染色格子数

1. 题目描述

在这里插入图片描述

2. 思路分析

数学能力已经退化,比赛时肯定不优先推公式。

  • 找规律dp。
  • 发现每次增加i*4个。

3. 代码实现

f = [1]*(10**5+1)
x = [1]*(10**5+1)
for i in range(2,10**5+1):
    x[i] = (i-1)*4
    f[i] = f[i-1] + x[i]
class Solution:
    def coloredCells(self, n: int) -> int:
        return f[n]        

四、[Medium] 2580. 统计将重叠区间合并成组的方案数

链接: 2580. 统计将重叠区间合并成组的方案数

1. 题目描述

在这里插入图片描述

2. 思路分析

  • 分析题意发现,有交集的区间一定在一起,那么划分完会变成x个集合,这x个集合分别可以在左边或右边就互不影响了。
  • 因此答案就是2**x。

3. 代码实现

MOD = 10 ** 9 + 7
class Solution:
    def countWays(self, ranges: List[List[int]]) -> int:
        cnt = 1
        ranges.sort()
        print(ranges)
        p = ranges[0][1]
        for x,y in ranges:
            if x <= p:
                p = max(p,y)
            else:
                cnt += 1
                p = y
        
        return pow(2,cnt,MOD)

五、[Hard] 2581. 统计可能的树根数目

链接: 2581. 统计可能的树根数目

1. 题目描述

在这里插入图片描述

2. 思路分析

  • 知道是换根DP,之前学了max版的换根dp,这次遇到加法的就不会了。
  • 学了一下。
  • 当然用模板也能做。

3. 代码实现

class Solution:
    def rootCount(self, edges: List[List[int]], guesses: List[List[int]], k: int) -> int:
        n = len(edges)+ 1
        g = [[] for _ in range(n)]
        for u,v in edges:
            g[u].append(v)
            g[v].append(u)
        s = set(tuple(x) for x in guesses)
        f = [0]*n
        def dfs(u,fa):
            for v in g[u]:
                if v != fa:
                    if (u,v) in s:
                        f[0] += 1
                    dfs(v,u)
        
        def reroot(u,fa):
            for v in g[u]:
                if v != fa:
                    f[v] = f[u] + int((v,u) in s) - int((u,v) in s)
                    reroot(v,u)
        dfs(0,-1)
        reroot(0,-1)
        return sum(x >= k for x in f)      

六、参考链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/404618.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DALL·E 2 论文阅读笔记

《Hierarchical Text-Conditional Image Generation with CLIP Latents》Paper: https://cdn.openai.com/papers/dall-e-2.pdfProject: https://openai.com/product/dall-e-2Author: OpenAI闲言碎语时间线&#xff1a;2021.01推出DALLE&#xff0c;2021年底推出GLIDE&#xff0…

锦正茂风冷系列电源JCP-10-80的技术参数

JCP-10-80为高稳定度的双极性恒流电源&#xff0c;广泛应用于电磁铁、亥姆霍兹线圈等感性负载的励磁。电源采用线性电源结构&#xff0c;输出电流稳定度高&#xff0c;纹波和噪声低。电源输出电流可在正负额定电流*值之间连续变化&#xff0c;电流平滑连续过零&#xff0c;可使…

引出生命周期、生命周期_挂载流程、生命周期_更新流程、生命周期_销毁流程、生命周期_总结——Vue

目录 一、引出生命周期 二、生命周期_挂载流程 三、生命周期_更新流程 四、生命周期_销毁流程 五、生命周期_总结 一、引出生命周期 生命周期&#xff1a; 1.又名&#xff1a;生命周期回调函数、生命周期函数、生命周期钩子。 2.是什么&#xff1a;Vue在关键时刻帮我们调…

centos安装 jenkins

目录 一、安装 jdk 二、安装 maven 三、安装 jenkins 官网地址&#xff1a;Jenkins 一、安装 jdk 首先检索包含 java 的列表 yum list java* 检索1.8的列表 yum list java-1.8* 安装 1.8.0 的所有文件 yum install java-1.8.0-openjdk* -y使用命令检查是否安装成功 …

Git图解-IDEA中的Git操作

目录 一、配置Idea 二、项目克隆 三、文件状态识别 四、Git操作 4.1 git add--添加暂存区 4.2 git commit--提交本地仓库 4.3 git push--推送远程仓库 4.4 git pull--更新本地仓库 五、完整开发流程 5.1 步骤1&#xff1a;克隆项目 5.2 步骤2&#xff1a;创建自己开发…

呆头鹅批量剪辑软件,一天制作1000+视频过审神器,0基础批量操作

当我们需要处理大量的视频时&#xff0c;怎么样才能够让工作变得更加简单&#xff1f;可以来试试呆头鹅批量剪辑软件&#xff0c;软件功能非常强大&#xff0c;支持批量剪辑视频&#xff0c;剪辑的过程中可以设置输出的位置和分辨率&#xff0c;同时可以对视频进行一些编辑处理…

CentOS定时任务——crontab

crontab Linux crontab 是用来定期执行程序的命令。 crond 命令每分钟会定期检查是否有要执行的工作&#xff0c;如果有要执行的工作便会自动执行该工作。 注意&#xff1a;新创建的 cron 任务&#xff0c;不会马上执行&#xff0c;至少要过 2 分钟后才可以&#xff0c;当然你…

软件测试16

在桌面上打开终端窗口, 执行如下操作: 将根目录下所有文件的详细信息输出到 demo 文件中查看 demo 文件前 5 行内容查看 demo 文件后 5 行内容将 ping www.itheima.com 的信息输出到 ping_log 文件中重新开启一个终端窗口, 动态查看 ping_log 文件中的信息 查看日志文件内容…

unity3D基础操作之01--unity3d窗口界面介绍

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录最常使用5种窗口1、Scene场景编辑窗口2、Game游戏运行窗口需要注意的是3、Hierarchy场景物体列表窗口4、Project项目资源列表窗口需要注意的是5、Inspector属性编辑列…

4.Spring Cloud (Hoxton.SR8) 学习笔记—Nacos微服务治理、Nacos配置管理

本文目录如下&#xff1a;一、Nacos微服务治理Nacos 下载 与 启动Spring Cloud 集成 NacosIDEA 同一个 Application 启动多次Nacos - 配置集群Nacos - 设置负载均衡Nacos - 设置服务实例的权重二、Nacos 配置管理Nacos - 合理的把配置信息迁移到 Nacos 中Nacos - 如何使用 Naco…

自然语言处理中数据增强(Data Augmentation)技术最全盘点

与“计算机视觉”中使用图像数据增强的标准做法不同&#xff0c;在NLP中&#xff0c;文本数据的增强非常少见。这是因为对图像的琐碎操作&#xff08;例如将图像旋转几度或将其转换为灰度&#xff09;不会改变其语义。语义上不变的转换的存在是使增强成为Computer Vision研究中…

【Java开发】设计模式 03:建造者模式

1 建造者模式介绍建造者模式使用多个简单的对象一步一步构建成一个复杂的对象。当一个类的构造函数参数个数超过4个&#xff0c;而且这些参数有些是可选的参数&#xff0c;考虑使用构造者模式。&#x1f4cc; 场景当一个类的构造函数参数超过4个&#xff0c;而且这些参数有些是…

【论文研读 上】基于开源软件的无人机飞行仿真 鹿珂珂,刘登攀,王超

基于开源软件的无人机飞行仿真 摘 要 飞行控制算法设计和仿真是无人机研制的关键步骤。为了缩短无人机飞行控制算法设计周期和试验成本&#xff0c;对无人 机纵向和侧向控制算法进行了设计&#xff0c;并基于开源软件开发了固定翼无人机可视化的飞行仿真系统&#xff0c; 固定…

Kafka入门教程

1 Kafka安装 1.1 压缩包安装 1.1.1 JDK环境安装 Kafka是依赖JDK环境的,所以需要事先安装好JDK 下载JDK安装包: Oracle JDK8下载SSH上传到想要安装的目录,比如 /opt.然后使用tar -zxvf jdk-8u351-linux-x64.tar.gz命令解压 添加环境变量 vi /etc/profile,输入如下内容保存后…

【9.数据页结构】

概述 InnoDB 的数据是按「数据页」为单位来读写的&#xff0c;也就是说&#xff0c;当需要读一条记录的时候&#xff0c;并不是将这个记录本身从磁盘读出来&#xff0c;而是以页为单位&#xff0c;将其整体读入内存。数据库的 I/O 操作的最小单位是页&#xff0c;InnoDB 数据页…

【Linux内核三】网络丢包debug案例

&#x1f449;个人主页&#xff1a;highman110 &#x1f449;作者简介&#xff1a;一名硬件工程师&#xff0c;持续学习&#xff0c;不断记录&#xff0c;保持思考&#xff0c;输出干货内容 目录 前言 测试环境 测试现象 ​编辑 定位过程 ​编辑 优化手段 1、加大ring buffer …

X86ARM @Linux平台cache eviction功能测试

经典的ARM处理器高速缓存工作原理: 高速缓存内部结构:

Qt样式表

1>样式表介绍 样式表可通过 QApplication::setStyleSheet()函数将其设置到整个应用程序上&#xff0c;也可以使用 QWidget::setStyleSheet()将其设置到指定的部件或子部件上&#xff0c;不同级别均可设置样式表&#xff0c;称为样式表的层叠。样式表也可通过设计模式编辑样…

vue中render函数的作用及解析

在vue脚手架的main.js文件中&#xff0c;存在这样一段代码&#xff1a; 意思是对vue实例的配置&#xff0c;其中render函数的作用是&#xff0c;将h创建的Node节点信息return返回给Vue.js底层处理文件中的beforeMount()生命周期钩子函数&#xff0c;让其将Node节点信息在界面中…

智能优化算法之蚁群算法

1、蚁群算法概述 蚁群算法&#xff08;Ant Colony Algorithm, ACA&#xff09; 由Marco Dorigo于1992年在他的博士论文中首次提出&#xff0c; 该算法模拟了自然界中蚂蚁的觅食行为。 蚂蚁在寻找食物源时&#xff0c; 会在其经过的路径上释放一种信息素&#xff0c; 并能够感知…