刷题记录(0528)

2024-06-06 19:12
文章标签 记录 刷题 0528

本文主要是介绍刷题记录(0528),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第一题 小苯的文章浏览

小苯是小红书的忠实用户之一。

这天,在“小红书app”发了一篇文章后,收获了若干浏览量。但其中有人浏览了多次,小苯现在想知道所有人第一次浏览的先后顺序,请你帮帮他吧。

输入描述

输入包含n+1行。

第一行一个正整数n,表示小苯拿到的浏览记录的记录条数。

接下来每行一个字符串s (长度在20)以内,表示id为s的用户此时浏览了一次小苯的文章。

输出描述:

输出包含若干行,每行一个字符串s,表示用户的id。按照每个浏览的用户第一次浏览的顺序输出。

输入:

8
qcjj
benh
qsmcgogo
qcjj
ducksajin
benh
ducksajin
acidlemon

输出:

qcjj
benh
qsmcgogo
ducksajin
acidlemon

提示:

共有以上5人点赞,按照第—次点的顺序输出即可。

代码:

利用集合的性质即可

def main():n = int(input())  seen = set()      ans = []          for _ in range(n):s = input()  if s in seen:continueseen.add(s)ans.append(s)for e in ans:print(e)if __name__ == "__main__":main()

第二题 小苯的粉丝关注

小苯是“小红书app”的忠实用户,他有n个账号,每个账号粉丝数为。

这天他又创建了一个新账号,他希望新账号的粉丝数恰好等于x。为此他可以向自己已有账号的粉丝们推荐自己的新账号,这样以来新账号就得到了之前粉丝的关注。

他想知道,他最少需要在几个旧账号发“推荐新账号”的文章,可以使得他的新账号粉丝数恰好为x,除此以外,他可以最多从中选择一个账号多次发“推荐新账号”的文章。

(我们假设所有旧账号的粉丝们没有重叠,并且如果在第i个旧账号的粉丝们推荐了新账号,则新账号会直接涨粉 ai/2下取整个,而如果小苯选择在第 i个旧账号中多次推荐新账号,那么新账号就可以直接涨粉。)

输入描述:

输入包含2行。 第一行两个正整数 n, x(1 ≤ n, k ≤ 100),分别表示小苯的旧账号个数,和新账号想要的粉丝数。 第二行n个正整数 (1 ≤  ≤ 100),表示小苯每个旧账号的粉丝数。

输出描述:

输出包含一行一个整数,表示小苯最少需要向多少个旧帐号推荐新账号,如果无法做到,输出-1。

输入:

5 8
1 2 3 4 10

输出:

2

提示:选择第3个和第5个旧账号,并在第3个账号多次发文。

思路:

动态规划

每个账号有三种状态:不发,发一次或者多发

import sysdef dfs(i, x, extra, n, a, memo):if x == 0:return 0if i >= n:return n + 1if memo[i][x][extra] != -1:return memo[i][x][extra]no = dfs(i + 1, x, extra, n, a, memo)one = n + 1if x >= a[i] // 2:one = dfs(i + 1, x - a[i] // 2, extra, n, a, memo) + 1multi = n + 1if x >= a[i] and not extra:multi = dfs(i + 1, x - a[i], True, n, a, memo) + 1memo[i][x][extra] = min(no, one, multi)return memo[i][x][extra]def main():input = sys.stdin.readdata = input().split()n = int(data[0])x = int(data[1])a = list(map(int, data[2:2+n]))memo = [[[-1 for _ in range(2)] for _ in range(x + 1)] for _ in range(n + 1)]ans = dfs(0, x, False, n, a, memo)if ans == n + 1:print(-1)else:print(ans)if __name__ == "__main__":main()

这篇关于刷题记录(0528)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1036981

相关文章

java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)

《java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)》:本文主要介绍java中pdf模版填充表单踩坑的相关资料,OpenPDF、iText、PDFBox是三... 目录准备Pdf模版方法1:itextpdf7填充表单(1)加入依赖(2)代码(3)遇到的问题方法2:pd

Zabbix在MySQL性能监控方面的运用及最佳实践记录

《Zabbix在MySQL性能监控方面的运用及最佳实践记录》Zabbix通过自定义脚本和内置模板监控MySQL核心指标(连接、查询、资源、复制),支持自动发现多实例及告警通知,结合可视化仪表盘,可有效... 目录一、核心监控指标及配置1. 关键监控指标示例2. 配置方法二、自动发现与多实例管理1. 实践步骤

在Spring Boot中集成RabbitMQ的实战记录

《在SpringBoot中集成RabbitMQ的实战记录》本文介绍SpringBoot集成RabbitMQ的步骤,涵盖配置连接、消息发送与接收,并对比两种定义Exchange与队列的方式:手动声明(... 目录前言准备工作1. 安装 RabbitMQ2. 消息发送者(Producer)配置1. 创建 Spr

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

Python UV安装、升级、卸载详细步骤记录

《PythonUV安装、升级、卸载详细步骤记录》:本文主要介绍PythonUV安装、升级、卸载的详细步骤,uv是Astral推出的下一代Python包与项目管理器,主打单一可执行文件、极致性能... 目录安装检查升级设置自动补全卸载UV 命令总结 官方文档详见:https://docs.astral.sh/

统一返回JsonResult踩坑的记录

《统一返回JsonResult踩坑的记录》:本文主要介绍统一返回JsonResult踩坑的记录,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录统一返回jsonResult踩坑定义了一个统一返回类在使用时,JsonResult没有get/set方法时响应总结统一返回

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

java对接海康摄像头的完整步骤记录

《java对接海康摄像头的完整步骤记录》在Java中调用海康威视摄像头通常需要使用海康威视提供的SDK,下面这篇文章主要给大家介绍了关于java对接海康摄像头的完整步骤,文中通过代码介绍的非常详细,需... 目录一、开发环境准备二、实现Java调用设备接口(一)加载动态链接库(二)结构体、接口重定义1.类型

apache的commons-pool2原理与使用实践记录

《apache的commons-pool2原理与使用实践记录》ApacheCommonsPool2是一个高效的对象池化框架,通过复用昂贵资源(如数据库连接、线程、网络连接)优化系统性能,这篇文章主... 目录一、核心原理与组件二、使用步骤详解(以数据库连接池为例)三、高级配置与优化四、典型应用场景五、注意事