【蓝桥杯】 砝码称重 Python 实现与优化(练习系统满分)【第十二届省赛 A 组】

本文主要是介绍【蓝桥杯】 砝码称重 Python 实现与优化(练习系统满分)【第十二届省赛 A 组】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

之前实现了一个版本,但是总是过不了所有测试点,这几天突然想起来就又优化了一下。当然 dotcpp 上还是 91 分,但是官网练习系统都能过了(但是他给了你五秒啊喂……)
不过其实这个题本身就是比较中规中矩的 dp 问题啦,当然这个题不是放到 Python 组的,估计也有这方面的考虑吧~

import sys
# 第零个优化,快速输入输出,加不加都行。
input = sys.stdin.readline
print = sys.stdout.writen = int(input())
w = [0, *map(int, input().split())]
MAXN = sum(w) + 1
# 第一个优化,所有物品能组成的最大状态就是他们的总和(这里也可以用字典实现啦)
dp = [[False] * MAXN for _ in range(n + 1)]
# 另外要注意的是这个题是没法用滚动数组的,这和状态的继承有关。
dp[0][0] = True
# 第二个优化,结果使用集合记录能称出的重量。
res = set()
for i in range(1, n + 1):for j in range(MAXN):dp[i][j] = dp[i - 1][j]# 优化三,如果 i-1 个 砝码能称出来这里会继承到。# 但是这个状态在之前已经加到我们的值里了,所以直接跳过# 这样还避免了 j = 0 的情况~if (dp[i][j]): continuedp[i][j] |= dp[i - 1][abs(j - w[i])]if (j + w[i] < MAXN):dp[i][j] |= dp[i - 1][j + w[i]]# 记录称出的结果if (dp[i][j]): res.add(j)
# 前面使用 stdout.write 替代了 print 所以这里要手动加换行符
print(str(len(res)) + "\n")

在这里插入图片描述

在这里插入图片描述

这篇关于【蓝桥杯】 砝码称重 Python 实现与优化(练习系统满分)【第十二届省赛 A 组】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

python管理工具之conda安装部署及使用详解

《python管理工具之conda安装部署及使用详解》这篇文章详细介绍了如何安装和使用conda来管理Python环境,它涵盖了从安装部署、镜像源配置到具体的conda使用方法,包括创建、激活、安装包... 目录pytpshheraerUhon管理工具:conda部署+使用一、安装部署1、 下载2、 安装3

Python进阶之Excel基本操作介绍

《Python进阶之Excel基本操作介绍》在现实中,很多工作都需要与数据打交道,Excel作为常用的数据处理工具,一直备受人们的青睐,本文主要为大家介绍了一些Python中Excel的基本操作,希望... 目录概述写入使用 xlwt使用 XlsxWriter读取修改概述在现实中,很多工作都需要与数据打交

在C#中获取端口号与系统信息的高效实践

《在C#中获取端口号与系统信息的高效实践》在现代软件开发中,尤其是系统管理、运维、监控和性能优化等场景中,了解计算机硬件和网络的状态至关重要,C#作为一种广泛应用的编程语言,提供了丰富的API来帮助开... 目录引言1. 获取端口号信息1.1 获取活动的 TCP 和 UDP 连接说明:应用场景:2. 获取硬

使用Python实现在Word中添加或删除超链接

《使用Python实现在Word中添加或删除超链接》在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能,本文将为大家介绍一下Python如何实现在Word中添加或... 在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能。通过添加超

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,

windos server2022里的DFS配置的实现

《windosserver2022里的DFS配置的实现》DFS是WindowsServer操作系统提供的一种功能,用于在多台服务器上集中管理共享文件夹和文件的分布式存储解决方案,本文就来介绍一下wi... 目录什么是DFS?优势:应用场景:DFS配置步骤什么是DFS?DFS指的是分布式文件系统(Distr

NFS实现多服务器文件的共享的方法步骤

《NFS实现多服务器文件的共享的方法步骤》NFS允许网络中的计算机之间共享资源,客户端可以透明地读写远端NFS服务器上的文件,本文就来介绍一下NFS实现多服务器文件的共享的方法步骤,感兴趣的可以了解一... 目录一、简介二、部署1、准备1、服务端和客户端:安装nfs-utils2、服务端:创建共享目录3、服

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma

2.1/5.1和7.1声道系统有什么区别? 音频声道的专业知识科普

《2.1/5.1和7.1声道系统有什么区别?音频声道的专业知识科普》当设置环绕声系统时,会遇到2.1、5.1、7.1、7.1.2、9.1等数字,当一遍又一遍地看到它们时,可能想知道它们是什... 想要把智能电视自带的音响升级成专业级的家庭影院系统吗?那么你将面临一个重要的选择——使用 2.1、5.1 还是