牛客周赛 Round 33 解题报告 | 珂学家 | 思维场


前言


整体评价

感觉这场更偏思维,F题毫无思路,但是可以模拟骗点分, E题是dij最短路.


A. 小红的单词整理

类型: 签到

w1,w2 = input().split()
print (w2)
print (w1)

B. 小红煮汤圆

思路: 模拟

可以从拆包的角度去构建模拟

注意拆一包,可以烧好几次的情况

n, x, k = list(map(int, input().split()))

res = []
pack = 0
left = 0
for i in range(n):
    left += x
    pack += 1
    while left >= k:
        res.append(pack)
        left -= k
        pack = 0

print (len(res))
print (*res, sep=' ')

C. 小红的 01 串

思路: 枚举

其实只能删除第1/第2,只能保证删除数组的前面一个区间,最多保留一个

题外话

如果题目改成第1/第2/…/第k,那最大价值数组是多少?

其实也是类似的思路


枚举最后一个被删除的位子

这样价值为 [前缀最多一位] + [后缀区间价值和]

s = input()

n = len(s)

n0, n1 = 0, 0
for c in s:
    if c == '0':
        n0 += 1
    else:
        n1 += 1

# 然后枚举
res = max(0, n1 - n0)

t1 = 0
for i in range(n):
    if s[i] == '0':
        n0 -= 1
    else:
        n1 -= 1
        t1 += 1
    res = max(res, n1 - n0 + (1 if t1 > 0 else 0))
    
print (res)

D. 小红的数组清空

思路: 贪心

尽量从最小值开始删除,带动连续数组

貌似这边for嵌套while,看似时间复杂度很高,但实际上,每次都会有效删除至少1,而n最多1e5,所以均摊下来为O(1)

时间复杂度为 O ( n ) O(n) O(n)

# 贪心
n = int(input())
arr = list(map(int, input().split()))

from collections import Counter

cnt = Counter(arr)

brr = [[k, v] for (k, v) in cnt.items()]
brr.sort(key=lambda x: x[0])

ans = 0
m = len(brr)
for i in range(m):
    if brr[i][1] > 0:
        j = i + 1
        cost = brr[i][1]
        brr[i][1] = 0
        ans += cost
        while j < m and cost > 0 and brr[j - 1][0] + 1 == brr[j][0]:
            cost = min(cost, brr[j][1])            
            brr[j][1] -= cost
            j += 1

print (ans)

E. 小红勇闯地下城

思路: dijkstra最短路

题型: 板子题

t = int(input())

import heapq
from math import inf

def solve(grids, health):
    h, w = len(grids), len(grids[0])
    
    sy, sx = -1, -1
    ty, tx = -1, -1
    for i in range(h):
        for j in range(w):
            if grids[i][j] == 'S':
                sy, sx = i, j
            elif grids[i][j] == 'T':
                ty, tx = i, j
                
    if sy == -1 or ty == -1:
        return "No"
    arr = []
    
    vis = [[inf] * w for _ in range(h)]
    heapq.heappush(arr, (0, sy, sx))
    vis[sy][sx] = 0
    
    while len(arr) > 0:
        cur = heapq.heappop(arr)
        if cur[0] > vis[cur[1]][cur[2]]:
            continue
        if cur[0] >= health:
            continue
        if cur[1] == ty and cur[2] == tx:
            return "Yes"
        for (dy, dx) in [(1, 0), (-1, 0), (0, -1), (0, 1)]:
            gy = cur[1] + dy
            gx = cur[2] + dx
            if gy >= h or gy < 0 or gx >= w or gx < 0:
                continue
            
            tcost = 0
            if grids[gy][gx] >= '0' and grids[gy][gx] <= '9':
                tcost = ord(grids[gy][gx]) - ord('0')
                
            if vis[gy][gx] > cur[0] + tcost and cur[0] + tcost < health:
                vis[gy][gx] = cur[0] + tcost
                heapq.heappush(arr, (vis[gy][gx], gy, gx))
    
    return "No"

for _ in range(t):
    n, m, h = list(map(int, input().split()))
    grids = []
    for _ in range(n):
        grids.append(input())
    print (solve(grids, h))

F. 小红的数组操作

后期再补上


写在最后

alt

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何增加层次厚度?

Q 老师&#xff0c;我在做一个斧头武器&#xff0c;如何在平面上增加厚度和层次呢&#xff1f; A 选中这几个线&#xff0c;点连接就会出现中线&#xff0c;把中线稍作调整即可~

Springboot+vue的社区医疗综合服务平台(有报告)。Javaee项目,springboot vue前后端分离项目

演示视频&#xff1a; Springbootvue的社区医疗综合服务平台&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot vue前后端分离项目 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的社区医疗综合服务平台&#xff0c;采用M&#xff08;m…

数据分析这么卷吗!AI几分钟做完我半天的工作,这让人怎么办!

随着AI技术的飞速发展&#xff0c;人工智能领域正在经历一场前所未有的革命。无论是ChatGPT还是谷歌的巴德&#xff0c;以及国内诸如文心一言、ChatGLM等产品的涌现&#xff0c;都在不断地证明着这一点。这些技术不仅在推动着各行业的发展&#xff0c;更在不断地改变着我们的生…

Redis如何修改key名称

点击上方蓝字关注我 近期出现过多次修改Redis中key名字的场景&#xff0c;本次简介一下如何修改Redis中key名称的方法。 1. 命令行方式修改在Redis中&#xff0c;可以使用rename命令来修改Key的名称。这个命令的基本语法如下&#xff1a; RENAME old_key new_key 在这里&#…

详细分析Pandas中的Series对象(附Demo)

目录 1. 问题所示2. 基本知识3. API Demo4. 示例Demo5. 彩蛋 1. 问题所示 从实战上手基础知识 一开始遇到这个Bug&#xff1a; TypeError: unsupported operand type(s) for -: str and float后面经了解执行减法运算时发生了错误&#xff0c;其中一个操作数是字符串类型&…

继承(extends)

继承[extends] 继承的好处继承的示意图继承的使用细节JVM的内存&#xff1a;继承的内存布局 继承的好处 1&#xff09;提高代码的复用性 2&#xff09;代码的扩展性和维护性提高了 继承的示意图 继承的使用细节 1&#xff09;子类继承了所有属性和方法&#xff0c;非私有的…

liunx前后端分离项目部署

文章目录 1、nginx的安装和自启动2.nginx负载均衡3.前后端项目部署-后端部署4.前后端项目部署-前端部署 1、nginx的安装和自启动 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel1.安装我们nginx所需要的依赖 wget http://nginx.org/download/nginx-1.…

线程池的常用实现及执行流程

线程池 线程池线程池接口线程池参数线程池分类动态数目线程池固定数目线程池单例线程池任务调度线程池 线程池的执行流程 线程池 线程池接口 线程池参数 1、corePoolSize&#xff1a;核心线程数&#xff0c;线程池中最少线程&#xff0c;核心线程不会被回收。 2、maximumPoo…

做接口测试的流程一般是怎么样的?UI功能6大流程、接口测试8大流程这些你真的全会了吗?

在讲接口流程测试之前&#xff0c;首先需要给大家申明下&#xff1a;接口测试对于测试人员而言&#xff0c;非常非常重要&#xff0c;懂功能测试接口测试&#xff0c;就能在企业中拿到一份非常不错的薪资。 这么重要的接口测试&#xff0c;一般也是面试笔试必问。为方便大家更…

自定义搭建管理系统

最近使用自己搭建的脚手架写了一个简易管理系统&#xff0c;使用webpackreactantd&#xff0c;搭建脚手架参考&#xff1a; 使用Webpack5搭建项目&#xff08;react篇&#xff09;_babel-preset-react-app-CSDN博客 搭建的思路&#xff1a; 1. 基建布局&#xff0c;使用antd的…

Linux调用可执行程序:system()函数和execl函数

system()函数&#xff1a; system()函数是一个在C/C编程语言中的库函数&#xff0c;用于在操作系统中执行命令。 函数声明如下&#xff1a; int system(const char *command);该函数接受一个指向以空字符结尾的字符串的指针作为参数&#xff0c;该字符串包含要执行的命令。函…

[ai笔记12] chatGPT技术体系梳理+本质探寻

欢迎来到文思源想的ai空间&#xff0c;这是技术老兵重学ai以及成长思考的第12篇分享&#xff01; 这周时间看了两本书&#xff0c;一本是大神斯蒂芬沃尔弗拉姆学的《这就是ChatGPT》,另外一本则是腾讯云生态解决方案高级架构师宋立恒所写的《AI制胜机器学习极简入门》&#xf…

OpenHarmony Docker移植实践

Docker简介 从操作系统诞生之日起&#xff0c;虚拟化技术就不断的演进与发展&#xff0c;结合目前云原生的发展态势&#xff0c;容器无疑是其中的重要一环。 Docker是一个开源的软件项目&#xff0c;可以在Linux操作系统上提供一层额外的抽象&#xff0c;让用户程序部署在一个…

单日收益四位数的Ai姓氏头像项目

单日收益四位数的Ai姓氏头像项目 发布时间&#xff1a;2024-02-24 00:00:00作者&#xff1a;傲战浏览&#xff1a;未知分类&#xff1a;教程网朗读&#xff1a; 最近利用AI一键生成头像的这个项目又火起来了,据说一天直播间光礼物就能收到大几千 操作起来没什么难度,一键生成 …

HarmonyOS-ArkTS卡片运行机制和相关模块

ArkTS卡片运行机制 实现原理 图1 ArkTS卡片实现原理 卡片使用方&#xff1a;显示卡片内容的宿主应用&#xff0c;控制卡片在宿主中展示的位置&#xff0c;当前仅系统应用可以作为卡片使用方。卡片提供方&#xff1a;提供卡片显示内容的应用&#xff0c;控制卡片的显示内容、…

LeetCode--代码详解 235.二叉搜索树得最近公共祖先

235.二叉搜索树得最近公共祖先 题目 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个结点 p、q&#xff0c;最近公共祖先表示为一个结点 x&#xff0c;满足 x 是 p、q 的祖先且 x 的深度尽可…

nginx------------- 变量 日志分割 自定义图标 证书 (四)

一、高级配置 1 .1网页的状态页 基于nginx 模块 ngx_http_stub_status_module 实现&#xff0c;在编译安装nginx的时候需要添加编译参数 --with-http_stub_status_module&#xff0c;否则配置完成之后监测会是提示语法错误注意: 状态页显示的是整个服务器的状态,而非虚拟主机…

RunnerGo五种压测模式你会配置吗?

我们在做性能测试时需要根据性能需求配置不同的压测模式如&#xff1a;阶梯模式。使用jmeter时我们需要安装插件来配置测试模式&#xff0c;为了方便用户使用&#xff0c;RunnerGo内嵌了压测模式这一选项&#xff0c;今天给大家介绍一下RunnerGo的几种压测模式和怎么根据性能需…

使用GPT生成python图表

首先&#xff0c;生成一脚本&#xff0c;读取到所需的excel表格 import xlrddata xlrd.open_workbook(xxxx.xls) # 打开xls文件 table data.sheet_by_index(0) # 通过索引获取表格# 初始化奖项字典 awards_dict {"一等奖": 0,"二等奖": 0,"三等…

针对无法确定连接参数的网口通讯PLC采集方案

年前碰到了一个需求&#xff0c; 需要针对倍福PLC进行数据采集&#xff0c; 搞定了PLC通讯协议后&#xff0c; 最大的问题出现了&#xff0c; 我们不知道PLC的密码&#xff0c; 没办法进入到PLC查询到点位&#xff0c; 而且也没办法对PLC设置路由&#xff0c; 导致没有办法连上…
最新文章