CSDN周赛65期简要题解

news2024/11/15 4:28:11

最近几期周赛里,貌似 Python 又变成 C 站的亲儿子了。输入形式是列表还不过瘾,现在输出形式也要求是列表,而且是连一个逗号、空格、中括号都不能少的 Python 标准列表形式。虽然对 Python 来说是信手拈来,但总要考虑一下其他编程语言选手的感受吧。纵观这么多在线评测网站,同类型的题目至少会要求譬如“按行输出,每行数字之间空格隔开”这样,而像 C 站这样输入输出的格式这么随意的,还真是独一家。长此以往,越来越多的人也不愿意参与了。


本期非编程题属于我的知识盲区,但正确答案并不难得到,和往常一样,这里就不废话了。

编程题:

第一题 数组排序

给你一个整数数组 nums ,请你将数组按照每个值的频率降序排序。如果有多个值的频率相同,请你按照数值本身将它们降序排序。 请你返回排序后的数组。

参数限制: 1 <= nums.length <= 100, -100 <= nums[i] <= 100

题目很简单,就是数组的两次排序,内置函数就能完成。但是离大谱的是本题没有用例。随便输入什么,然后点运行都显示 AC,但是却一分没有。我记得以前每次周赛前还会有个测试链接(我就曾因为发现了测试链接而被取消过成绩),难道现在已经没有人测试了吗?

就算是有用例,观察一下示例中的输入输出:

正如文章开头吐槽的那样,输出也要求列表形式 —— 估计能把 C 难受死。

不过一维列表应该还算 OK,中括号和逗号的位置都是固定的,就当组合成字符串输出了。而下一题,却要求二维列表也是以这个格式输出。

第二题 求解秩矩阵

给你一个 m x n 的矩阵 matrix ,请你返回一个新的矩阵 answer ,其中 answer[row][col] 是 matrix[row][col] 的秩。这里定义的每个元素的秩是一个整数,表示这个元素相对于其他元素的大小关系,它按照如下规则计算:

  1. 秩是从 1 开始的一个整数。
  2. 如果两个元素 p 和 q 在 同一行 或者 同一列 ,那么: 如果 p < q ,那么 rank(p) < rank(q) 如果 p == q ,那么 rank(p) == rank(q) 如果 p > q ,那么 rank(p) > rank(q) 秩 需要越 小 越好。

题目保证按照上面规则 answer 数组是唯一的。

参数说明: m == matrix.length n == matrix[i].length 1 <= m n <= 500 -10e9 <= matrix[row][col] <= 10e9

题目给出的三个示例:

而且离谱的是,如果用它提供的“自测”功能,把输入输出放进去,会发现示例中的数组没有空格,而正确答案的输出数组中元素之间却是要求有空格的,也就是 Python 那种列表输出方式。所以,即使千辛万苦做到示例的格式,从而通过了示例,也无法通过本题任何一个实际用例。

而这种输入输出简直就是为 Python 量身定制的,因为压根不需要考虑输出的问题:

matrix = eval(input())
# matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(matrix)
分析

抛开上面这种题目输出格式的问题不谈,其实本题考察的内容和数独很相似。如果把最终输出的结果是一个二维列表,里面每个元素都是相应位置的原数组的“秩”,要求满足条件的这个“秩”尽量要小,一个比较直观的办法,就是不断地从小到大依次去尝试每个数字的“秩”,直到符合条件为止。

拿示例中的 [[20,-21,14],[-19,4,19],[22,-47,24],[-19,4,19]] 为例,直观且暴力的方法就是:

  1. 先检查第一个元素 20,然后看同行同列有没有比它小的;
  2. 很显然,同行同列都有比它小的,-21 和 -19;
  3. 然后分别检查 -21 和 -19 所在的行有没有比他们更小的数字;
  4. -21 所在的列有更小的 -47,但 -19 所在的行和列都没有更小的了,所以 -19 的“秩” 为最小的 1;
  5. 继续检查 -47,它所在的行和列都没有更小的了,所以 -47 的“秩”也为最小的 1;
  6. 然后再回退一步,检查 -21,除了 -47 之外,同行同列没有比 -21 更小的数字了,所以我们暂时为它赋值“秩”为 2,因为我们不确定,其他地方是否也有 -21,但是却存在 -47 和 -21 之间的数字;
  7. 不断重复上述步骤,如果遇到第 6 步提到的冲突情况,则取更大的值,直到所有数字都满足要求。

其实在这个过程中,我们就可以看出,满足要求的“秩”有以下两个特征:

  1. 相同数字的“秩”是一样的;
  2. 不同数字可以有相同的“秩”,只要它们在各自的行、列满足要求。

所以,类似深度搜索,我们可以使用递归来解决问题。结合上面直观暴力的方法,最终思路如下:

  1. 从任意一个数字开始检查,它的秩要比它所在行或列里比它小的数字里最大的“秩”加一;
  2. 如果它的下一个数字和它相等,则继续查找下一个;
  3. 行、列里满足条件的数字如果还没有“秩”,则进入递归,回到第 1 步;
  4. 如果行、列里没有比该数字更小的数字,则该数字的“秩”为一,递归返回。

上述递归的难点在于,每个数字要额外记录比它小的数字里最大的数字的位置。可以额外使用一个三维数组来记录,每个数字记录它的行和列里下一个数字的行列信息,或者就直接在每次查找的时候再排序进行查找。

第二个要注意的地方就是相等的数字的“秩”也相同,所以当某数字的下一个数字和自己相等时,如果它没有“秩”,则跳过,继续查找下一个,如果它已经有了“秩”,则直接返回,不执行加一操作。

本期客观因素太多,造成众多选手未能得分,并不是因为题目有多难,所以代码就不献丑了。

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

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

相关文章

建木-进阶使用-自动化部署-流程自动化部署-节点化部署-将jar包运行在指定的服务器上-ssh文件书写-docker镜像创建

阿丹&#xff1a; 建木的搭建以及在jar包中的dockerfile文件的书写。已经完毕。现在开始使用建木的流程化部署来完成自动化部署。 进入我们自己配置的建木页面 新建一个分组&#xff0c;方便我们不同项目的管理 起名要求见名知意 使用图形项目 开始新建一个流程&#xff0c;…

百题千解计划【CSDN每日一练】“小明投篮,罚球线投球可得一分”(附解析+多种实现方法:Python、Java、C、C++、C#、Go、JavaScript)

这个心上人,还不知道在哪里,感觉明天就会出现。 🎯作者主页: 追光者♂🔥 🌸个人简介: 💖[1] 计算机专业硕士研究生💖 🌟[2] 2022年度博客之星人工智能领域TOP4🌟 🏅[3] 阿里云社区特邀专家博主🏅 🏆[4] CSDN-人工智能领域优质创作者�…

十八章:用于弱监督语义分割的自监督等变注意力机制

0.摘要 图像级弱监督语义分割是一个具有挑战性的问题&#xff0c;近年来得到了深入研究。大多数先进的解决方案利用类激活图&#xff08;CAM&#xff09;。然而&#xff0c;由于全监督和弱监督之间存在差距&#xff0c;CAM几乎无法用作对象掩码。在本文中&#xff0c;我们提出了…

最后的组合:K8s 1.24 基于 Hekiti 实现 GlusterFS 动态存储管理实践

前言 知识点 定级&#xff1a;入门级GlusterFS 和 Heketi 简介GlusterFS 安装部署Heketi 安装部署Kubernetes 命令行对接 GlusterFS 实战服务器配置(架构 1:1 复刻小规模生产环境&#xff0c;配置略有不同) 主机名IPCPU内存系统盘数据盘用途ks-master-0192.168.9.912450100…

王道数据结构-代码实操1(全注解版)

#include<stdio.h>void loveyou(int n){ // 传入参数类型为int型&#xff0c;在此函数中表示为n&#xff1b;返回值类型为void&#xff0c;即没有返回值&#xff1b; int i1; //定义了一个整数型变量i&#xff0c;且只在loveyou函数中有用&#xff1b;while(i…

python环境搭建和pycharm安装

python环境搭建 下载地址&#xff1a;Python Releases for Windows | Python.org 双击安装 选择自定义安装&#xff0c;勾选添加至PATH 配置自定义安装路径 点击disable 长度限制 测试安装 winr ->cmd->python,出现版本号则安装成功 pycharm安装 访问Jetbrains中文官网&a…

linux的C/C++线程池(VS2019开发)

文章目录 一、准备工作二、C语言threadpool实现三、C 11标准实现 代码看视频敲的&#xff0c;非原创 一、准备工作 创建项目 连接linux虚拟机 启动测试&#xff1a;VS2019运行Linux程序报错&#xff1a;无法启动gdb。系统中缺少gdb。sudo yum install -y gdb 线程池的组成主…

【Maven】Maven配置国内镜像

文章目录 1. 配置maven的settings.xml文件1.1. 先把镜像mirror配置好1.2. 再把仓库配置好 2. 在idea中引用3. 参考资料 网上配置maven国内镜像的文章很多&#xff0c;为什么选择我&#xff0c;原因是&#xff1a;一次配置得永生、仓库覆盖广、仓库覆盖全面、作者自用的配置。 1…

matlab使用教程(5)—矩阵定义和基本运算

本博客介绍如何在 MATLAB 中创建矩阵和执行基本矩阵计算。 MATLAB 环境使用矩阵来表示包含以二维网格排列的实数或复数的变量。更广泛而言&#xff0c;数组为向量、矩阵或更高维度的数值网格。MATLAB 中的所有数组都是矩形&#xff0c;在这种意义上沿任何维度的分量向量的长度…

启动Anaconda卡在loading applications的解决办法

启动Anaconda卡在 loading applications的解决办法 问题解决方法 问题 系统环境&#xff1a;macOS BigSur v11.2.2 启动anaconda后&#xff0c;卡在 loading applications界面。 解决方法 在anaconda安装目录下找到conda_api.py文件&#xff0c;将 data yaml.load(f)修改为…

【沐风老师】3dMax子样条线编辑插件SubSpline使用方法详解

3dMax子样条线编辑插件SubSpline&#xff0c;是3dMax中样条曲线形状的高级子对象选择器和材质ID编辑器。 只需一个简单的切换按钮&#xff0c;即可在屏幕上轻松显示所有选定形状的顶点编号和材质ID。 利用箭头工具选择样条曲线子对象&#xff0c;以补充和扩展3dsMax的标准工具…

推荐功能强大的活码管理平台(支持淘宝客和分享卡片)

功能强大的活码管理平台源码-支持淘宝客和分享卡片等功能 演示地址&#xff1a;runruncode.com/code/19494.html 首页 查看群活码、客服码、渠道码当天总访问量查看成员账号个数查看群活码、客服码、渠道码当天各时段访问量 群活码 创建、编辑、删除、分享群活码查看群活码…

使用MyBatis(2)

目录 一、定义接口、实体类、创建XML文件实现接口&#xff09; 二、MyBatis的增删改查 &#x1f345;1、MyBatis传递参数查询 &#x1f388;写法一 &#x1f388;写法二 &#x1f388;两种方式的区别 &#x1f345;2、删除操作 &#x1f345;3、根据id修改用户名 &#x…

推荐带500创作模型的付费创作V2.1.0独立版系统源码

ChatGPT 付费创作系统 V2.1.0 提供最新的对应版本小程序端&#xff0c;上一版本增加了 PC 端绘画功能&#xff0c; 绘画功能采用其他绘画接口 – 意间 AI&#xff0c;本版新增了百度文心一言接口。 后台一些小细节的优化及一些小 BUG 的处理&#xff0c;前端进行了些小细节优…

fasta序列转为数字0和1-python

原始文件&#xff1a; 目标文件&#xff1a; linux版本 #name:lin_convert_fasta_to_01.py #! /usr/bin/env python #usage: python hash-always.py -l 1.list -f 2.txt > out.txt import argparse parser argparse.ArgumentParser(description"Advanced screeni…

训练自己的行文本检测EAST模型

训练自己的行文本检测EAST模型 训练数据格式 训练数据格式

Mybatis初识(一)

一.Mybatis是什么 MyBatis 是一款优秀的持久层框架&#xff0c;它支持自定义SQL、存储过程以及高级映射。MyBatis 去除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的XML或注解来配置,和映射原始类型、接口和Java POJO (Plain Old Java Objects…

UDS诊断协议

UDS本质上是一系列服务的集合&#xff0c;包含6大类&#xff0c;共26种。每种服务都有独立的ID&#xff0c;即SID。 请求 SID(1Byte) 参数 SID(1Byte) Sub-function(1Byte) 参数 SID DID(2Bytes) 响应 肯定响应 SID0x40(1Byte) Sub-function(根据请求是否存在) 参数…

【C++进阶】继承

⭐博客主页&#xff1a;️CS semi主页 ⭐欢迎关注&#xff1a;点赞收藏留言 ⭐系列专栏&#xff1a;C进阶 ⭐代码仓库&#xff1a;C进阶 家人们更新不易&#xff0c;你们的点赞和关注对我而言十分重要&#xff0c;友友们麻烦多多点赞&#xff0b;关注&#xff0c;你们的支持是我…

收集springboot2.6和2.7新功能新特性,以便后续项目中使用

更多功能看演示系统 gitee源代码地址 后端代码: https://gitee.com/nbacheng/nbcio-boot 前端代码:https://gitee.com/nbacheng/nbcio-vue.git 在线演示(包括H5) : http://122.227.135.243:9888 因为nbcio-boot已经升级到2.7,所以先收集SpringBoot2.6和2.7的新功能,…