[acwing周赛复盘] 第 91 场周赛20230218
[acwing周赛复盘] 第 91 场周赛20230218
- 一、本周周赛总结
- 二、 4861. 构造数列
- 1. 题目描述
- 2. 思路分析
- 3. 代码实现
- 三、4862. 浇花
- 1. 题目描述
- 2. 思路分析
- 3. 代码实现
- 四、4863. 构造新矩阵
- 1. 题目描述
- 2. 思路分析
- 3. 代码实现
- 六、参考链接
一、本周周赛总结
- 这周挺难的。
- T1 贪心分解数位。
- T2 差分 / 排序模拟。
- T3 二分+思维。
二、 4861. 构造数列
链接: 4861. 构造数列
1. 题目描述
2. 思路分析
想了半天
- 其实就是贪心的处理每一位,拆出来即可。
3. 代码实现
# Problem: 构造数列
# Contest: AcWing
# URL: https://www.acwing.com/problem/content/4864/
# Memory Limit: 256 MB
# Time Limit: 1000 msimport sys
import bisect
import random
import io, os
from bisect import *
from collections import *
from contextlib import redirect_stdout
from itertools import *
from array import *
from functools import lru_cache
from types import GeneratorType
from heapq import *
from math import sqrt, gcd, inf
if sys.version >= '3.8': # ACW没有combfrom math import combRI = lambda: map(int, sys.stdin.buffer.readline().split())
RS = lambda: map(bytes.decode, sys.stdin.buffer.readline().strip().split())
RILST = lambda: list(RI())
DEBUG = lambda *x: sys.stderr.write(f'{str(x)}\n')# ms
def solve():n, = RI()ans = []base = 1for i,v in enumerate(str(n)[::-1]):if v != '0':ans.append(int(v)*base)base *= 10print(len(ans))print(*ans)if __name__ == '__main__':t, = RI()for _ in range(t):solve()
三、4862. 浇花
链接: 4862. 浇花
1. 题目描述
2. 思路分析
方法1,排序+模拟
- 由于数据是有序的,而且不允许重复,因此直接判断开始时间和上个元素的结束时间是否相邻即可。
- 数量就最后暴力。
方法2,差分
- 出题人的本意是让差分做,其实更好。
- 预处理差分数组后,遍历还原数组,应该每个值都是1,否则就返回失败。
3. 代码实现
# Problem: 浇花
# Contest: AcWing
# URL: https://www.acwing.com/problem/content/4865/
# Memory Limit: 256 MB
# Time Limit: 1000 msimport sys
import bisect
import random
import io, os
from bisect import *
from collections import *
from contextlib import redirect_stdout
from itertools import *
from array import *
from functools import lru_cache
from types import GeneratorType
from heapq import *
from math import sqrt, gcd, infif sys.version >= '3.8': # ACW没有combfrom math import combRI = lambda: map(int, sys.stdin.buffer.readline().split())
RS = lambda: map(bytes.decode, sys.stdin.buffer.readline().strip().split())
RILST = lambda: list(RI())
DEBUG = lambda *x: sys.stderr.write(f'{str(x)}\n')# 差分 ms
def solve():n, m = RI()a = [0] * (n + 2)for _ in range(m):x, y = RI()a[x] += 1a[y + 1] -= 1s = 0for i in range(1,n+1):s += a[i]if s != 1:return print(i,s)print('OK')# ms
def solve1():n, m = RI()a = []for _ in range(m):a.append(RILST())a.sort()i = 0ans = -1for x, y in a:if x <= i:ans = xbreakif x > i + 1:ans = i + 1breaki = yelse:if i < n:ans = i + 1if ans == -1:print('OK')else:s = sum(x <= ans <= y for x, y in a)print(ans, s)if __name__ == '__main__':solve()
四、4863. 构造新矩阵
链接: 4863. 构造新矩阵
1. 题目描述
2. 思路分析
二分答案,但是judge函数需要一定思维。
- 考试时首交提交了个比较长的代码,复杂度看起来过不了,其实能过哈哈,已注释。
- 简单的方法:
- 判断每列都有满足>=L的数字,同时存在一行,有至少两个>=L的数字。
- 这是因为:只要每列(共n列)都有满足的数字,则起码可以选出n行来满足需求。
- 那么只要存在某行拥有2个>=L的数,就可以少取一行,变成n-1行。
- 其它情况则不满足。
- 然后二分即可:由于L越大越不可能满足,因此是单调递减的。
3. 代码实现
# Problem: 构造新矩阵
# Contest: AcWing
# URL: https://www.acwing.com/problem/content/4866/
# Memory Limit: 256 MB
# Time Limit: 1000 msimport sys
import bisect
import random
import io, os
from bisect import *
from collections import *
from contextlib import redirect_stdout
from itertools import *
from array import *
from functools import lru_cache
from types import GeneratorType
from heapq import *
from math import sqrt, gcd, infif sys.version >= '3.8': # ACW没有combfrom math import combRI = lambda: map(int, sys.stdin.buffer.readline().split())
RS = lambda: map(bytes.decode, sys.stdin.buffer.readline().strip().split())
RILST = lambda: list(RI())
DEBUG = lambda *x: sys.stderr.write(f'{str(x)}\n')MOD = 10 ** 9 + 7def my_bisect_left(a, x, lo=None, hi=None, key=None):"""由于3.10才能用key参数,因此自己实现一个。:param a: 需要二分的数据:param x: 查找的值:param lo: 左边界:param hi: 右边界(闭区间):param key: 数组a中的值会依次执行key方法,:return: 第一个大于等于x的下标位置"""if not lo:lo = 0if not hi:hi = len(a) - 1else:hi = min(hi, len(a) - 1)size = hi - lo + 1if not key:key = lambda _x: _xwhile size:half = size >> 1mid = lo + halfif key(a[mid]) < x:lo = mid + 1size = size - half - 1else:size = halfreturn lo# 5148 ms
def solve():RS()m, n = RI()g = []for _ in range(m):g.append(RILST())# 首先判断若每列都有满足>=x的数,则起码可以选不超过n行出来,满足条件。# 这是只要存在一行有用2个>=x得数,就可以少选一行即n-1行。# 否则就不行def ok(x):if all(max(col) >= x for col in zip(*g)) and any(sum(v >= x for v in row) >= 2 for row in g):return Falsereturn Trueprint(my_bisect_left(range(10 ** 10), True, key=ok) - 1)# 4887 ms
def solve1():RS()m, n = RI()g = []for _ in range(m):g.append(RILST())# 相当于给m个[1,0,1,0]布条重叠放,其中1是不透明的。# 问最少几根布条叠在一起可以全部不透明。# 或者说给m个n位的二进制数,问最少几个数或到一起可以全1。# 贪心考虑,优先选1最多的那个数。# 选了的1,从剩余数字每个中删掉,对剩余数字依然有1的数字,重新按照1数量排序。# 直到选完了或者数字没有了。这时如果没选完就失败。# 用set来储存每个数字1的位置,按len排序。每次排序复杂度log(m)# 这里的复杂度看似很高,但其实每位上的1最多从每个数中删去1次,复杂度是m*n的。def ok(x):p = []for row in g:s = {i for i, v in enumerate(row) if v >= x}if s:p.append(s)if not p:return Truep.sort(key=len)c = 0t = set(range(n))while t and p:c += 1if c > n - 1:return Trues = p.pop()if not s:breakt -= sq = []for v in p:v -= sif v:q.append(v)p = qp.sort(key=len)if t:return Truereturn Falseprint(my_bisect_left(range(10 ** 10), True, key=ok) - 1)if __name__ == '__main__':t, = RI()for _ in range(t):solve()
六、参考链接
- 无
相关文章:

[acwing周赛复盘] 第 91 场周赛20230218
[acwing周赛复盘] 第 91 场周赛20230218 一、本周周赛总结二、 4861. 构造数列1. 题目描述2. 思路分析3. 代码实现三、4862. 浇花1. 题目描述2. 思路分析3. 代码实现四、4863. 构造新矩阵1. 题目描述2. 思路分析3. 代码实现六、参考链接一、本周周赛总结 这周挺难的。T1 贪心分…...
蓝桥12届
小蓝准备用 256MB 的内存空间开一个数组,数组的每个元素都是 32 位 二进制整数,如果不考虑程序占用的空间和维护内存需要的辅助空间,请问 256MB 的空间可以存储多少个 32 位二进制整数?1MB 1024KB 1KB 1024字节(byte) 1字节 8位…...
华为OD机试 - 斗地主(JS)
斗地主 题目 斗地主起源于湖北十堰房县, 据传是一位叫吴修全的年轻人根据当地流行的扑克玩法“跑得快”改编的, 如今已风靡整个中国,并流行于互联网上 牌型: 单顺,又称顺子,最少5张牌,最多12张牌(3...A),不能有2, 也不能有大小王,不计花色 例如:3-4-5-7-8,7-8-9-1…...

【MyBatis】| MyBatis的注解式开发
目录 一:MyBatis的注解式开发 1. Insert注解 2. Delete注解 3. Update注解 4. Select注解 5. Results注解 一:MyBatis的注解式开发 MyBatis中也提供了注解式开发⽅式,采⽤注解可以减少Sql映射⽂件的配置。 当然,使⽤注…...

python自制PDF转换.PNG格式图片(按每页生成图片完整源码)小工具!
使用PyQt5应用程序制作PDF转换成图片的小工具,可以导入PDF文档后一键生成对应的PNG图片。 PDF图片转换小工具使用的中间件: python版本:3.6.8 UI应用版本:PyQt5 PDF文件操作非标准库:PyPDF2 PNG图片生成库࿱…...

Go 数组和切片反思
切片的底层数据结构是数组,所以,切片是基于数组的上层封装,使用数组的场景,也完全可以使用切片。 类型比较 我看到 go 1.17 有对切片和数组转换的优化,禁不住纳闷,有什么场景是必须数组来完成的呢&#x…...

win10电脑性能优化设置
win10电脑性能优化设置 目录win10电脑性能优化设置1.桌面图标显示2.wini2.1 “系统”2.1.1专注助手 关2.1.2 电源和睡眠 设置为从不2.1.3 存储 开2.2 网络和Internet2.3 个性化2.4 应用2.5 账户2.6 游戏2.7 隐私墨迹书写和键入个性化:关活动历史记录:全部…...

作为初学者必须要了解的几种常用数据库!
现在已经存在了很多优秀的商业数据库,如甲骨文(Oracle)公司的 Oracle 数据库、IBM 公司的 DB2 数据库、微软公司的 SQL Server 数据库和 Access 数据库。同时,还有很多优秀的开源数据库,如 MySQL 数据库,Po…...
小红书日常实习一面面经
时间:2月13下午 平台:赛码网,视频面大概70分钟顺序大致是下面,讲到哪问到哪,基础知识最好要结合项目或者实际回答,没录音不完全,有错误请指正首先面试官人超级好,细心提问,耐心解答问…...
将Nginx 核心知识点扒了个底朝天(一)
什么是Nginx? Nginx是一个 轻量级/高性能的反向代理Web服务器,用于 HTTP、HTTPS、SMTP、POP3 和 IMAP 协议。他实现非常高效的反向代理、负载平衡,他可以处理2-3万并发连接数,官方监测能支持5万并发,现在中国使用ngin…...

SSM项目搭建保姆级教程
文章目录1、什么是SSM框架1.1、持久层1.2、业务层1.3、表现层1.4、View层1.5、SpringMVC执行流程1.6、MyBatis2、SSM实战搭建2.1、创建工程2.2、添加依赖2.3、配置spring.xml文件2.4、配置web.xml文件2.5、log4j.properties2.6、准备表2.7、实体类2.8、mapper2.9、service2.10、…...
LeetCode 350. 两个数组的交集 II
原题链接 难度:easy\color{Green}{easy}easy 题目描述 给你两个整数数组 nums1nums1nums1 和 nums2nums2nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现…...

Python可以解码吗,解码打码是如何实现的
前言 咳咳,进来的铁汁都是抱着学习的心态进来看的吧,咱今天不讲解解码,咱来说说python如何来实现打码功能~ 这一个个进来的 都是标题党吧哈哈哈 有兴趣的可以继续看看哦 最近重温了一档综艺节目 至于叫什么 这里就不细说了 老是看着看着就…...

Jackson 序列化:Cannot deserialize value of type `java.time.LocalDateTime`
问题描述 使用 jackson 反序列化异常如下: Caused by: com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type java.time.LocalDateTime from String “2023-02-13 19:43:01”: Failed to deserialize java.time.LocalDat…...
机试_3_数据结构(一)_习题
数据结构(一)——练习题 学习完第三章-数据结构(一)之后,当然要做相应地练习啦~ 注:上述习题都可以在牛客进行测试。 例如,第2题链接:计算表达式_牛客题霸_牛客网 (nowcoder.com)…...

《Hadoop篇》------HDFS与MapReduce
目录 一、HDFS角色职责总结 二、CheckPoint机制 三、Mapreduce序列化 四、Mapper 4.1、官方介绍 4.2、Split计算 4.3、Split和block对应关系 4.4、启发式算法 五、MapTask整体的流程 六、压缩算法 6.1、压缩算法适用场景 6.2、压缩算法选择 6.2.1、Gzip压缩 6.2…...

网络爬虫简介
前言 没什么可以讲的所以就介绍爬虫吧 介绍 网络爬虫(英语:web crawler),也叫网路蜘蛛(spider),是一种用来自动浏览万维网的网络机器人。其目的一般为编纂网络索引。 网路搜索引擎等站点通过…...

通过4个月的自动化学习,现在我也拿到了25K的offer
毕业后的5年,是拉开职场差距的关键时期。有人通过这5年的努力,实现了大厂高薪,有人在这5年里得到贵人的赏识,实现了职级的快速拔升,还有人在这5年里逐渐掉队,成了职场里隐身一族,归于静默。 而…...
分库分表了解
数据切分根据其切分类型,可以分为两种方式:垂直(纵向)切分和水平(横向)切分一:垂直(纵向)切分【基于表或字段划分,表结构不同】1:垂直分库根据业务…...

docker中 gitlab 安装、配置和初始化
小笔记:gitlab配置文件 /etc/gitlab/gitlab.rb 配置项jcLee95 的CSDN博客:https://blog.csdn.net/qq_28550263?spm1001.2101.3001.5343 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_28550263/article/details/1…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...

DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...

GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...

python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...

毫米波雷达基础理论(3D+4D)
3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文: 一文入门汽车毫米波雷达基本原理 :https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...

在 Spring Boot 中使用 JSP
jsp? 好多年没用了。重新整一下 还费了点时间,记录一下。 项目结构: pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...