牛客周赛 Round 55 解题报告 | 珂学家


前言

alt


题解

补题这场比赛,好像还是难。


A. 小红的字符串

签到题

枚举最终的字符,求最小的修改

这个方法更有通用性

s = input()from math import inf
import stringans = inf
for c in string.ascii_letters:ans = min(ans, sum([1 for z in s if z != c]))print (ans)

B. 小红的序列乘积

思路: 模拟

也是为后续的E题做铺垫

因为关注的个位数,所以乘积的时候,可以 m o d 10 mod \ 10 mod 10, 从而避免大数乘法

n = int(input())arr = list(map(int, input().split()))ans = 0
acc = 1
for v in arr:acc = acc * v % 10if acc == 6:ans += 1
print (ans)

C. 小红的数组重排

思路: 贪心构造

移项转化,可以观察到

偶数项 a 0 < a 2 < a 4 < . . . < a x , x 是偶数 { a_0 < a_2 < a_4 < ... < a_x, x是偶数} a0<a2<a4<...<ax,x是偶数

奇数项 a 1 < a 3 < a 5 < . . . < a y , y 是奇数 { a_1 < a_3 < a_5 < ... < a_y, y是奇数} a1<a3<a5<...<ay,y是奇数

两个序列大小没有制约关系

由于是严格小于,所以序列中必然没有3个以上的相同项

注:特别注意0最多一个,而且只能在偶数序列中

  1. 先分配出现次数为2的数,偶数/奇数序列各一个
  2. 0这个数一定要放在偶数序列中
  3. 剩下单个数,那个序列数不足,放哪里

# a1 < a3 < a5
# a2 < a4 < a6n = int(input())
arr = list(map(int, input().split()))from collections import Counterdef solve():m1 = (n + 1) // 2m2 = n // 2ext = []ls1, ls2 = [], []cnt = Counter(arr)if cnt[0] >= 2:return Nonefor (k, v) in cnt.items():if v > 2:return Noneif v == 2:ls1.append(k)ls2.append(k)else:if k == 0:ls1.append(0)else:ext.append(k)while len(ls1) < m1:ls1.append(ext.pop())while len(ls2) < m2:ls2.append(ext.pop())# 排序组合ls1.sort()ls2.sort()res = []for (k1, k2) in zip(ls1, ls2):res.append(k1)res.append(k2)return resls = solve()
if ls is None:print ("NO")
else:print ("YES")print (*ls, sep=' ')

D. 虫洞操纵者

思路: BFS

有些绕,遇到1或者边界会存在跳跃情况

n = int(input())g = []
for _ in range(n):row = list(map(int, input().split()))g.append(row)from math import inf
dp = [[inf] * n for _ in range(n)]from collections import deque
dp[0][0] = 0
deq = deque()
deq.append((0, 0))while len(deq) > 0:y, x = deq.popleft()for (dy, dx) in [(-1, 0), (1, 0), (0, -1), (0, 1)]:ty, tx = y + dy, x + dxif 0 <= ty < n and 0 <= tx < n:if g[ty][tx] == 0:if dp[ty][tx] > dp[y][x] + 1:dp[ty][tx] = dp[y][x] + 1deq.append((ty, tx))continueif dy == -1:ty += 2while ty < n and g[ty][tx] == 0:ty += 1if g[ty - 1][tx] == 0 and dp[ty - 1][tx] > dp[y][x] + 1:dp[ty - 1][tx] = dp[y][x] + 1deq.append((ty - 1, tx))elif dy == 1:ty -= 2while ty >= 0 and g[ty][tx] == 0:ty -= 1if g[ty + 1][tx] == 0 and dp[ty + 1][tx] > dp[y][x] + 1:dp[ty + 1][tx] = dp[y][x] + 1deq.append((ty + 1, tx))elif dx == -1:tx += 2while tx < n and g[ty][tx] == 0:tx += 1if g[ty][tx - 1] == 0 and dp[ty][tx - 1] > dp[y][x] + 1:dp[ty][tx - 1] = dp[y][x] + 1deq.append((ty, tx - 1))elif dx == 1:tx -= 2while tx >= 0 and g[ty][tx] == 0:tx -= 1if g[ty][tx + 1] == 0 and dp[ty][tx + 1] > dp[y][x] + 1:dp[ty][tx + 1] = dp[y][x] + 1deq.append((ty, tx + 1))#print (dp)
print (dp[-1][-1] if dp[-1][-1] != inf else -1)

E. 小红的序列乘积2.0

思路: 贡献法 + DP

非常好的一道题

引入 d p [ i ] [ s ] , s ∈ [ 0 , 9 ] {dp[i][s], s \in [0, 9]} dp[i][s],s[0,9], 表示前i项中,个位数为s的序列总数

那为何引入贡献法呢?

其实只要出现6,那它就贡献 d p [ i ] [ 6 ] ∗ 2 n − 1 − i dp[i][6] * 2^{n - 1 - i} dp[i][6]2n1i 次数

那这个dp,只需要维护序列总数即可

第一维,可以借助滚动数组优化

这样时间复杂度为 O ( 10 ∗ n ) O(10 * n) O(10n), 空间复杂度为 O ( 10 ) O(10) O(10)

def pow(b, v, m):r = 1while v > 0:if v % 2 == 1:r = r * b % mb = b * b % mv //= 2return r    n = int(input())arr = list(map(int, input().split()))dp = [0] * 10mod = 10 ** 9 + 7
res = 0
for (i, v) in enumerate(arr):dp2 = dp[:]if v % 10 == 6:res += pow(2, (n - 1 - i), mod)res %= moddp2[v % 10] += 1lv = v % 10;for j in range(1, 10):if j * lv % 10 == 6:res += dp[j] * pow(2, (n - 1 - i), mod) % modres %= moddp2[j * lv % 10] += dp[j]dp2[j * lv % 10] %= moddp = dp2print (res)

F. 灯下定影

下次补上



写在最后

alt

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Datawhale X 魔搭 】AI夏令营第四期大模型方向,Task1:智能编程助手(持续更新)

在一个数据驱动的世界里&#xff0c;人工智能的未来应由每一个愿意学习和探索的人共同塑造和掌握。希望这里是你实现AI梦想的起点。 大模型小白入门&#xff1a;https://linklearner.com/activity/14/11/25 大模型开发工程师能力测试&#xff1a;https://linklearner.com/activ…

【前端可视化】 大屏可视化项目二 scale适配方案 g6流程图 更复杂的图表

项目介绍 第二个大屏可视化&#xff0c;整个项目利用scale进行按比例适配。 图表更加复杂&#xff0c;涉及到图表的叠加&#xff0c;mark&#xff0c;地图&#xff0c;g6流程图的能等 始终保持比例适配(本项目方案),始终满屏适配(项目一). echarts绘制较为复杂图表&#xff0…

mysql导入jdbc

每次创建项目都要导入jar包 版本对应 mysql是5xxjdbc也用5xx 下载jdbc.jar包 maven仓库搜索mysql&#xff1a;maven官网 导入jar包 创建lib目录&#xff0c;复制jar包&#xff0c;粘贴到lib当中 导入成功

Android Basis - 密钥和ID认证

书读百遍其义自现&#xff0c;知识点多复习&#xff0c;看到的越多&#xff0c;理解的也越是深刻。也许此时我看到的点是点&#xff0c;十天半个月之后回头看时可能就是新的点或者线了&#xff0c;写博客也是&#xff0c;越写越深刻。 遇到KeyAttestation在gms中的错误 在cts…

Nest.js 实战 (八):基于 JWT 的路由身份认证鉴权

身份验证 身份认证是大多数应用程序的重要组成部分&#xff0c;有很多不同的方法和策略来处理身份认证。 当前比较流程的是JWT 认证&#xff0c;也叫令牌认证&#xff0c;今天我们探讨一下在 Nest.js 中如何实现。 认证流程 客户端将首先使用用户名和密码进行身份认证认证成…

Sql与Rce注入相关漏洞复现

目录 sqli-labs注入第38&#xff0c;48关 第38关&#xff08;单引号闭合&#xff09; ​编辑 第48关 (GET请求-基于错误-盲注-数字型-order by 排序 ​编辑 贷齐乐系统多处Sql注入漏洞 环境搭建 将贷齐乐源码放入phpstudy中的www目录下 在phpstudy上创建网站&#xff1…

ESP8266与阿里云物联网平台连接

前言 最近折腾项目&#xff0c;需要用到ESP8266模块对接阿里云物联网平台&#xff0c;网上感觉十分完善的教程少了一点点&#xff0c;比较折腾我哈哈哈&#xff0c;所以打算自己写一篇。 材料准备 1、ESP8266 WiFi模块 数据线 网上随便买一个就好&#xff0c;十块钱左右一个…

C# winform 三层架构增删改查,(删除篇)

一.留言 C# wnform 三层架构增删改查&#xff0c;本篇是增删改查是删除篇&#xff0c;也就增删改查外加一个登录更新完&#xff0c;后续考虑出一个增删改查就是不用三层架构&#xff0c;在uI里面 直接写完&#xff0c;并且放一个帮助类&#xff0c;基本十分钟可以写完一套增删…

数据保存--总结

目录 Excel Excel--openpyxl mysql Excel Excel--openpyxl ... mysql

快速幂、矩阵快速幂

乘法快速幂&#xff1a; P1226 【模板】快速幂 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import ja…

【C#】一个项目移动了位置,或者换到其他电脑上,编译报错 Files 的值“IGEF,解决方法

文章目录 1 问题分析2 本文解决方法 一个项目可以正常运行编译的项目&#xff0c;所有路径均为相对路径。 移动了位置&#xff0c;或者换到其他电脑上&#xff0c;编译报错 Files 的值“IGEF&#xff0c; 1 问题分析 这个错误信息表明在处理文件时&#xff0c;Files 的值出…

(限时免费)震惊!流落人间的haproxy宝典被找到了!一切玄妙尽在此处!

目录 haproxy七层代理详解一、负载均衡1.1 什么是负载均衡1.2 为什么使用负载均衡1.3 负载均衡类型1.3.1 硬件负载1.3.2 四层负载1.3.3 七层负载1.3.4 四层与七层的区别 二、haproxy介绍2.1 haproxy简介2.2 haproxy特性 三、haproxy详细部署3.1 实验所用的环境3.2 软件安装3.3 …

C语言 | Leetcode C语言题解之第330题按要求补齐数组

题目&#xff1a; 题解&#xff1a; int minPatches(int* nums, int numsSize, int n) {int patches 0;long long x 1;int index 0;while (x < n) {if (index < numsSize && nums[index] < x) {x nums[index];index;} else {x << 1;patches;}}retu…

【HarmonyOS NEXT星河版开发学习】小型测试案例06-小红书卡片

个人主页→VON 收录专栏→鸿蒙开发小型案例总结​​​​​ 基础语法部分会发布于github 和 gitee上面&#xff08;暂未发布&#xff09; 前言 在鸿蒙&#xff08;HarmonyOS&#xff09;开发中&#xff0c;自适应伸缩是指应用程序能够根据不同设备的屏幕尺寸、分辨率和形态&…

气象大数据案例项目(求各气象站的平均气温)

气象大数据案例项目&#xff08;求各气象站的平均气温&#xff09; 一、项目需求二、数据格式三、项目开发3.1 在windows 进行开发3.2 运行结果3.3 对项目打包 一、项目需求 现在有一份来自美国国家海洋和大气管理局的数据集&#xff0c;里面包含近30年每个气象站、每小时的天…

WSL2 最新最全帮助小白一步步详细安装教程

文章目录 一、前言1.1、什么是 WSL &#xff1f;1.2、WSL2 相比传统虚拟机的优势1.3、微软官方 二、安装步骤*2.1、启用 WSL 功能2.2、重启电脑2.3、dos命令自动安装 (一行命令搞定&#xff0c;非常方便)2.3.1、通过 cmd 打开 dos 命令行 或者 WIN键 R&#xff1a;2.3.2、输入…

探案录 | 在线打补丁,运维更轻松

清晨&#xff0c;曙光温柔地洒落在福尔摩斯K那标志性的书房内&#xff0c;福尔摩斯K坐在他那张熟悉的扶手椅上&#xff0c;眼神锐利如鹰&#xff0c;正沉浸在思考的海洋中。门突然被推开&#xff0c;华生K带着一丝急切步入室内。 “福尔摩斯K&#xff0c;这次案件非同小可&…

如何在线观看汤姆克鲁斯、比莉艾利什、红辣椒乐队、HER等明星的奥运闭幕式

2024 年巴黎奥运会将以一系列众星云集的表演者为结尾&#xff0c;他们将帮助将奥运会移交给洛杉矶——以下是在线直播盛大决赛的时间和地点。 经过两周多令人惊叹的田径运动、激烈的比赛和表情包活动后&#xff0c;2024 年巴黎奥运会即将落下帷幕。 奥运会闭幕式将于 8 月 12 …

【C++】 特殊类设计:从构思到实现,引领设计新潮流

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;C从入门到精通 目录 &#x1f680; 前言 一&#xff1a; &#x1f525; 不能被拷贝的类 二&#xff1a; &#x1f525; 只能在堆上创建对象的类 三&#xff1a; &#x1f525; 只能在栈上创建对象的…

uniapp使用echarts在H5上显示报错问题的解决方法

前言 在做uniapp vue3开发的echarts图表的时候&#xff0c;发现在浏览器上面正常运行&#xff0c;但在微信开发者工具上显示报错了&#xff0c;报错如下 原因&#xff1a;在微信小程序中&#xff0c;使用document.getElementById会报错&#xff0c;因为小程序的运行环境是基于…