LeetCode笔记:Biweekly Contest 43 比赛记录

matplotlib保存图片设置分辨率总是96dpi,好烦躁,教你一招轻松解决 matplotlib保存图片设置分辨率总是96dpi,好烦躁,教你一招轻松解决 目录 matplotlib保存图片设置分辨率总是96dpi,好烦躁,教你一招轻松解决 #使用plt.savefig("cm.png",dpi = 300)为什么不管用 #plt.rcParams也不管用 #解决方案 在做论文的过程中,许多期刊或者会议对图片的分辨率有明确的要求,例如,dpi=300。 之前画曲线图都是采取保存方式为savefig(dpi=300),然后查看保存图片的属性信息,然而你看到的现象是 阅读详情

0. 赛后总结

这一次的比赛整体上还算是顺利吧,虽然也只做出了三题,还错了两次,不过比较前两周的成绩,呵呵,总也算是一个比较开心的事了吧。。。

不过这次终究还算是运气好,大约是最后一题比较难的缘故,这次居然还有国内84/1631,世界214/7837,国内差不多前5%,世界前3%。

不过这次最开心的是最后一题不像之前那样毫无思路,是能做的,至少是有思路的,然后就做了一下,最后遇到了超时,80个测试样例过了77个,卡死在后最后三个上,但总算思路是没问题的,考虑到总共也就10多个人在比赛的时候做出了最后一题,这个还算是挺让人开心的。

但whatever,最后一题没做出来就是没做出来,争取能独立把这题搞出来吧。


可惜两天还是没能搞出来,唉。。。

1. 题目一

给出题目一的试题链接如下:

1. 解题思路

这一题没啥好说的,就是按照题目的意思直接按周求解一下即可。

2. 代码实现

给出python代码实现如下:

class Solution:
    def totalMoney(self, n: int) -> int:
        res = 0
        for i in range(n):
            res += (i // 7 + 1) + i % 7
        return res

提交代码评测得到:耗时48ms,占用内存14.3MB。

当前最优的解法耗时36ms,但是本质上也没啥差别就是了,有兴趣的读者可以自行去看一下,这里就不多做展开了。

2. 题目二

给出题目二的试题链接如下:

1. 解题思路

这一题的解题思路事实上也还好,只要想通一点:

  • 使用贪心算法优先将高分的操作全部执行不会影响最终的结果。

因此,我们只需要实现一个贪心算法来进行操作即可,即是说,当ab的分数高于ba时,就将所有的ab全部进行删除,然后删除所有的ba即可得到最终的最高分值,反之亦然。

2. 代码实现

给出python代码实现如下:

class Solution:
    def maximumGain(self, s: str, x: int, y: int) -> int:
        res = 0
        if x <= y:
            s1 = []
            for c in s:
                if c == "a" and s1 and s1[-1] == "b":
                    s1.pop()
                else:
                    s1.append(c)
            res += y * (len(s) - len(s1)) // 2
            s2 = []
            for c in s1:
                if c == "b" and s2 and s2[-1] == "a":
                    s2.pop()
                else:
                    s2.append(c)
            res += x * (len(s1) - len(s2)) // 2
        else:
            s1 = []
            for c in s:
                if c == "b" and s1 and s1[-1] == "a":
                    s1.pop()
                else:
                    s1.append(c)
            res += x * (len(s) - len(s1)) // 2
            s2 = []
            for c in s1:
                if c == "a" and s2 and s2[-1] == "b":
                    s2.pop()
                else:
                    s2.append(c)
            res += y * (len(s1) - len(s2)) // 2
        return res

提交代码评测得到:耗时332ms,占用内存16.1MB。

当前的最优解法耗时296ms,大致看了一下,感觉思路上应该是没啥差别,不过细节没有详细看,有兴趣的读者可以自行研读一下,如果可以的话也希望在评论区指导一二。

3. 题目三

给出题目三的试题链接如下:

1. 解题思路

这一题可以采用深度优先遍历,即从首位开始,在每一个未填的位置优先填入最大的可填值,直至第一次填充完成时,返回这个填充结果就是可以得到的最大结果。

2. 代码实现

给出python代码实现如下:

class Solution:
    def constructDistancedSequence(self, n: int) -> List[int]:
        res = [0 for _ in range(2*n-1)]
        status = [0 for _ in range(n+1)]
        
        def dfs(idx):
            nonlocal res
            if idx >= 2*n-1:
                return True
            for i in range(n, 0, -1):
                if status[i] == 1:
                    continue
                if i != 1 and idx + i < 2*n-1 and res[idx+i] == 0:
                    res[idx] = i
                    res[idx+i] = i
                    status[i] = 1
                    nxt_idx = res.index(0) if 0 in res else 2*n-1
                    success = dfs(nxt_idx)
                    if success:
                        return True
                    status[i] = 0
                    res[idx] = 0
                    res[idx+i] = 0
                elif i == 1:
                    res[idx] = i
                    status[i] = 1
                    nxt_idx = res.index(0) if 0 in res else 2*n-1
                    success = dfs(nxt_idx)
                    if success:
                        return True
                    status[i] = 0
                    res[idx] = 0
            return False

        dfs(0)
        return res      

提交代码评测得到:耗时52ms,占用内存14.2MB。为当前最优的代码实现。

4. 题目四

给出题目四的试题链接如下:

1. 解题思路

这里,我们先抛砖引玉一下吧,讲一下我们的思路。

首先,很明显可以看出的一点是:

  1. 如果某一个节点是根节点,那么它必然与所有的节点均有连接关系,因此,我们可以根据连接的其他节点的数目直接找到根节点;
  2. 如果根节点只有一个,我们将所有与根节点相关的连接全部去掉,就会得到一片森林,其中每一棵树都可以递归的调用上述算法看他是否存在连接,以及是否存在多种连接;
  3. 如果根节点有多个,那么我们同样可以删除所有包含这些节点的连接,同样可以得到一片森林,只不过,只要下述的森林中的树都可以构建,那么就有多种连接方式。

而判断去掉了根节点连接之后的所有节点哪些可以归于同一棵树的方法可以采用dsu算法。

这样,我们就可以写出一个递归调度算法。

2. 代码实现

给出python代码实现如下:

class DSU:
    def __init__(self, N):
        self.dsu = [i for i in range(N)]
        
    def find(self, k):
        if self.dsu[k] == k:
            return k
        self.dsu[k] = self.find(self.dsu[k]) 
        return self.dsu[k]
    
    def union(self, a, b):
        x = self.find(a)
        y = self.find(b)
        if x != y:
            self.dsu[y] = x
        return

class Solution:
    def checkWays(self, pairs: List[List[int]]) -> int:
        counter = defaultdict(int)
        for x, y in pairs:
            counter[x] += 1
            counter[y] += 1
        n = len(counter)
        if all(x == n-1 for x in counter.values()):
            return 2 if n >= 2 else 1
        if not any(x == n-1 for x in counter.values()):
            return 0

        roots = [x for x in counter if counter[x] == n-1]
        # print(pairs, n, counter, counter.values(), [x for x in counter.values() if x == n-1])
        
        pairs = [[x, y] for x, y in pairs if x not in roots and y not in roots]
        dsu = DSU(501)
        for x, y in pairs:
            dsu.union(x, y)
        pairs_group = defaultdict(list)
        for x, y in pairs:
            pairs_group[dsu.find(x)].append([x, y])
        if len(pairs_group) == 0:
            return 1 if len(roots) == 1 else 2
        res = []
        for p in pairs_group.values():
            cnt = self.checkWays(p)
            if cnt == 0:
                return 0
            res.append(cnt)
        return 1 if all(x == 1 for x in res) and len(roots) == 1 else 2

可惜,80个测试样例中只通过了77个,遇到了超时问题。

3. 算法优化

可惜了,想了两天,结果还是没有一个好的解答,最后还是看了别人的解答,然后就被震惊了,发现他们的解法真心优雅。

首先,还是我们之前的思路,不过他们提出了两个更为重要的中间结论:

  1. 如果有两个相互联通的点拥有相同的连接数目,则他们必然是互易的,即交换两个节点不会对最终的结果产生影响,此时,如果可以存在某种连接方式,那么他的种类必然多于1种;
  2. 儿子节点的连接数量总是不多于父亲节点的连接数量的,因此,当我们从连接最多的节点向下遍历其连接点时,总是可以将其父节点更新为更下层的这个新的节点。

因此,我们给出他们的python代码实现如下:

class Solution:
    def checkWays(self, pairs: List[List[int]]) -> int:
        cnt = collections.defaultdict(int)
        edges = collections.defaultdict(set)
        for u, v in pairs:
            cnt[u] += 1
            cnt[v] += 1
            edges[u].add(v)
            edges[v].add(u)
            
        nodes = sorted(cnt.keys(), key = lambda x: cnt[x], reverse = True)
        if cnt[nodes[0]] != len(nodes) - 1: return 0
        
        unique = True
        for x, y in pairs:
            if cnt[x] == cnt[y]:
                unique = False
                break

        pa = collections.defaultdict(int)
        pa[nodes[0]] = 0
        for o in nodes:
            for ch in edges[o]:
                if pa[ch] != pa[o]: return 0
                pa[ch] = o
                edges[ch].remove(o)
        
        return 1 if unique else 2

提交代码评测得到:耗时1588ms,占用内存43.7MB。属于当前最优的一批算法实现。

efm32 入门.pdf 本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。 立即下载

相关推荐

物理学建模及仿真平台Chrono安装

Chrono是一个基于物理学的建模和仿真基础设施,它是在C++中实现的独立于平台的开源设计。一个projectchrono库可以嵌入到一个软件项目中,例如在可变形地形上运行的轮式和履带式车辆、机器人、机械电子系统、顺应性机构和流体固体相互作用现象。系统可以由刚性和柔性/顺应性部件组成,并带有约束、电机和接触;部件可以具有三维形状,以便进行碰撞检测。然而安装还是出现了一些问题,所以在此总结。已经装好visual studio。

Already8888的博客 6501

文献阅读:Towards Out-of-Distribution Sequential Event Prediction:A Causal Treatment

文献阅读:Towards Out-of-Distribution Sequential Event Prediction:A Causal Treatment

codename_cys的博客 726

TMC2209串口配置实战:从寄存器解析到电机精准控制

本文详细解析TMC2209步进电机驱动芯片的串口配置方法,从硬件连接到UART通信协议,再到核心寄存器功能详解。通过实战案例展示电流控制、微步细分和速度调节等关键配置,帮助工程师实现电机精准控制,并提供了常见故障诊断和优化技巧。

f6g7h8i9j的博客 1176

Towards Out-of-Distribution Sequential Event Prediction: A Causal Treatment

序列事件预测的目标是根据历史事件序列估计下一个事件,应用于序列推荐、用户行为分析和临床治疗。在实际应用中,下一事件预测模型是用一次采集到的序列数据进行训练的,需要推广到遥远未来的新到达的序列,这就要求模型处理从训练到测试的时间分布转移。在本文中,我们首先从数据生成的角度揭示了一个负面的结果,即由于潜在的上下文混杂因素,即历史事件和下一个事件的共同原因,现有的最大似然估计方法将无法应对分布转移。然后设计了一种新的基于后门调整的学习目标,并进一步利用变分推理使其易于处理序列学习问题。

qq_43238825的博客 364

树莓派4B学习笔记一

树莓派4b烧录Ubuntu20.04&&配置Ubuntu桌面

m0_55202222的博客 3643

PX4|Gazebo模型加载失败排查指南:从环境变量到资源路径的全面解析

本文针对PX4与Gazebo联合仿真中常见的'Unable to get model name'错误,提供了从环境变量配置、资源路径排查到网络访问问题的全面解决方案。详细解析了GZ_SIM_RESOURCE_PATH等关键变量的作用与设置方法,并给出了离线模型库部署等一劳永逸的修复指南,帮助开发者彻底解决无人机模型加载失败问题。

weixin_29243063的博客 1230

NeurIPS 2022 | 序列(推荐)模型分布外泛化:因果视角与求解

©作者 |杨晨晓单位|上海交通大学论文题目:Towards Out-of-Distribution Sequential Event Prediction: A Causal Treatment作者信息:杨晨晓(上海交大),吴齐天(上海交大),Qingsong Wen(阿里达摩院),Zhiqiang Zhou(阿里达摩院),Liang Sun(阿里达摩院),严骏驰(上海交大)论文链接:ht...

Paper weekly 1155

【用ArcGIS制作一张好看的中国月度气温图

要最后选中那个事先调整好的那个数据框,这样其他两个数据框才能和其大小一致。

J_Giser的博客 1017

NeurIPS22 | 分子图分布外泛化与因果不变性

点击蓝字关注我们AI TIME欢迎每一位AI爱好者的加入!分布外泛化(Out-of-Distribution Generalization,简称OOD泛化)旨在解决训练数据与测试数据分布不一致的问题,即模型需要基于有限观测数据学习出背后稳健的规律与关联性,从而泛化到未知数据分布。OOD泛化是目前机器学习领域的研究热点,也是各种实际场景(如推荐系统、自动驾驶、药物设计等领域)亟待解决的关键问题。在上...

AITIME_HY的博客 1248

ESP32-IDF开发之旅 网络篇⑩ Web配网

本文介绍了基于ESP32S3的Web配网实现方案。作者通过移植开源项目,在ESP32S3上实现了WiFi配置功能,包括AP模式创建、HTTP服务器搭建、NVS存储读写等核心功能。文章详细解析了代码结构,包含WiFi初始化、事件处理、NVS存储管理和HTML页面服务等关键模块。实现方案采用AP+STA双模式,支持通过网页扫描WiFi并保存配置信息,适用于物联网设备的网络配置场景。代码中使用了FreeRTOS任务、ESP-IDF事件组等技术,并提供了完整的错误处理和日志记录功能。

单片机菜鸟哥的博客 351

基于Python的Booking酒店数据爬虫实战:最新技术与完整代码解析

本文将详细介绍如何使用Python构建一个高效的Booking酒店数据爬虫,涵盖从基础爬取到高级反反爬技术的完整实现。我们将使用最新的Python爬虫技术栈,包括requests-html、Playwright、智能代理轮换等技术,并提供完整的可运行代码示例。文章将深入探讨爬虫的各个组成部分,包括数据提取、存储、反反爬策略以及性能优化等方面。关键词:Python爬虫、Booking数据采集、反反爬技术、Playwright、数据存储。

2201_76125261的博客 936

上海交通大学船舶海洋与建筑工程学院谢彬Numerical TESTs for PDEs解答3.2.1

adf321Foam.C /*---------------------------------------------------------------------------*\ Changed from scalarTransportFoam to adv121Foam Application adf321Foam Description Solves training examples 3.2.1 problem. \*-------------------------

joshua_shi_t的博客 555

Scratch全攻略:从入门到实践的编程之旅

Scratch 是一款由麻省理工学院(MIT)开发的图形化编程工具 ,它诞生的初衷是为了让编程教育更加普及,尤其是让孩子们能够轻松接触和学习编程。与传统的基于文本代码的编程方式不同,Scratch 通过将编程指令以图形化的积木形式呈现,极大地降低了编程的门槛,让编程变得如同搭积木一样简单有趣。

邓邓子的博客 1万+

LeetCode笔记:Biweekly Contest 70

LeetCode笔记:Biweekly Contest 70 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 4. 题目四 1. 解题思路 2. 代码实现 1. 题目一 给出题目一的试题链接如下: 2144. Minimum Cost of Buying Candies With Discount 1. 解题思路 这一题直接使用贪婪算法即可实现。 首先我们将价格进行排序,然后价..

codename_cys的博客 5535

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

LeetCode笔记:Weekly Contest 219 比赛记录

LeetCode笔记:Weekly Contest 219 0. 赛后总结 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 4. 题目四 1. 解题思路 2. 代码实现 0. 赛后总结 这一次的比赛怎么说呢,感觉有点不尴不尬的。 要说吧,4道题也都做出来了,耗时老实说也没有特别长,不算错误惩罚的话其实也就56分钟,不到1个小时,整体虽然没有挤进国内前100,好歹也有前4%(116/..

codename_cys的博客 4819

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Leetcode 3629. Minimum Jumps to Reach End via Prime Teleportation

Leetcode 3629. Minimum Jumps to Reach End via Prime Teleportation

codename_cys的博客 3868

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

LeetCode笔记:Weekly Contest 221 比赛记录

LeetCode笔记:Weekly Contest 221 0. 赛后总结 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 4. 题目四 1. 解题思路 2. 代码实现 0. 赛后总结 昨天才遭遇滑铁卢,本以为成绩已经够差了,结果转头今天就被打脸,成绩比昨天还差,国内468/3397,全球1274/8838,真的是,不想说什么了。 不过这次真心是我自找的,第三题明明是一道简单的题目..

codename_cys的博客 3303

LeetCode笔记:Weekly Contest 229 比赛记录

LeetCode笔记:Weekly Contest 229 0. 赛后总结 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 4. 题目四 1. 解题思路 2. 代码实现 0. 赛后总结 这周的比赛整体都给跪了,两场比赛都是不顺的要死,昨天的比赛还能归结到看错题目,这次的比赛就真的是没得洗了,第三题超时之后就没有更好的思路了,第四题压根没有一个可行的思路,想到的解法实现出来之后发现都..

codename_cys的博客 2468

LeetCode笔记:Weekly Contest 206 比赛记录

LeetCode笔记:Weekly Contest 206 0. 赛后总结 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 4. 题目四 1. 解题思路 2. 代码实现 0. 赛后总结 最近不知是换到中文leetcode平台之后水土不服还是怎么样,感觉真的是到了瓶颈期了,最近几次打比赛真的是一次不如一次,做起来异常不顺手。 看了一下头部几位大佬们的做题耗时,基本都还是在10分钟左右..

codename_cys的博客 2016

Leetcode 3600. Maximize Spanning Tree Stability with Upgrades

3600. Maximize Spanning Tree Stability with Upgrades

codename_cys的博客 1751

LeetCode笔记:Biweekly Contest 42 比赛记录

LeetCode笔记:Biweekly Contest 42 0. 赛后总结 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 4. 题目四 1. 解题思路 2. 代码实现 0. 赛后总结 唉,前两周刚和同学吹牛说现在leetcode的比赛基本都能在前10%,发挥好的话能争国内前100,然后这周转头就被打脸,打得啪啪响,国内320/1578,世界1023/6631,连前20%都没卡进..

codename_cys的博客 1720

Leetcode 3448. Count Substrings Divisible By Last Digit

Leetcode 3448. Count Substrings Divisible By Last Digit

codename_cys的博客 1712

Leetcode 3537. Fill a Special Grid

Leetcode 3537. Fill a Special Grid

codename_cys的博客 1627

LeetCode笔记:Weekly Contest 220 比赛记录

LeetCode笔记:Weekly Contest 220 0. 赛后总结 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 4. 题目四 1. 解题思路 2. 代码实现 0. 赛后总结 这次的比赛结果略惨,只做出3题,然后国内才只有229/3690,世界则是667/9606,都是只有前7%的水平。 但是这次的题目应该算是比较简单的,看了一下,第一名的大佬只花了不到10分钟就搞定了,..

codename_cys的博客 1581

Leetcode 3389. Minimum Operations to Make Character Frequencies Equal

Leetcode 3389. Minimum Operations to Make Character Frequencies Equal

codename_cys的博客 1552

Leetcode 3609. Minimum Moves to Reach Target in Grid

Leetcode 3609. Minimum Moves to Reach Target in Grid

codename_cys的博客 1528
上一篇: 杂谈:浅谈工作环境配置
下一篇: LeetCode笔记:Weekly Contest 223 比赛记录
Espresso Macchiato
博客等级 码龄7年 2453粉丝 818原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值