【CSP】202209-2_何以包邮Python实现

### 文章目录

  • [@[toc]](#文章目录 @[toc] 试题编号 试题名称 时间限制 内存限制 题目描述 输入格式 输出格式 样例1输入 样例1输出 样例1解释 样例2输入 样例2输出 样例2解释 样例3输入 样例3输出 样例3解释 子任务 提示 Python实现)
  • [试题编号](#文章目录 @[toc] 试题编号 试题名称 时间限制 内存限制 题目描述 输入格式 输出格式 样例1输入 样例1输出 样例1解释 样例2输入 样例2输出 样例2解释 样例3输入 样例3输出 样例3解释 子任务 提示 Python实现)
  • [试题名称](#文章目录 @[toc] 试题编号 试题名称 时间限制 内存限制 题目描述 输入格式 输出格式 样例1输入 样例1输出 样例1解释 样例2输入 样例2输出 样例2解释 样例3输入 样例3输出 样例3解释 子任务 提示 Python实现)
  • [时间限制](#文章目录 @[toc] 试题编号 试题名称 时间限制 内存限制 题目描述 输入格式 输出格式 样例1输入 样例1输出 样例1解释 样例2输入 样例2输出 样例2解释 样例3输入 样例3输出 样例3解释 子任务 提示 Python实现)
  • [内存限制](#文章目录 @[toc] 试题编号 试题名称 时间限制 内存限制 题目描述 输入格式 输出格式 样例1输入 样例1输出 样例1解释 样例2输入 样例2输出 样例2解释 样例3输入 样例3输出 样例3解释 子任务 提示 Python实现)
  • [题目描述](#文章目录 @[toc] 试题编号 试题名称 时间限制 内存限制 题目描述 输入格式 输出格式 样例1输入 样例1输出 样例1解释 样例2输入 样例2输出 样例2解释 样例3输入 样例3输出 样例3解释 子任务 提示 Python实现)
  • [输入格式](#文章目录 @[toc] 试题编号 试题名称 时间限制 内存限制 题目描述 输入格式 输出格式 样例1输入 样例1输出 样例1解释 样例2输入 样例2输出 样例2解释 样例3输入 样例3输出 样例3解释 子任务 提示 Python实现)
  • [输出格式](#文章目录 @[toc] 试题编号 试题名称 时间限制 内存限制 题目描述 输入格式 输出格式 样例1输入 样例1输出 样例1解释 样例2输入 样例2输出 样例2解释 样例3输入 样例3输出 样例3解释 子任务 提示 Python实现)
  • [样例1输入](#文章目录 @[toc] 试题编号 试题名称 时间限制 内存限制 题目描述 输入格式 输出格式 样例1输入 样例1输出 样例1解释 样例2输入 样例2输出 样例2解释 样例3输入 样例3输出 样例3解释 子任务 提示 Python实现)
  • [样例1输出](#文章目录 @[toc] 试题编号 试题名称 时间限制 内存限制 题目描述 输入格式 输出格式 样例1输入 样例1输出 样例1解释 样例2输入 样例2输出 样例2解释 样例3输入 样例3输出 样例3解释 子任务 提示 Python实现)
  • [样例1解释](#文章目录 @[toc] 试题编号 试题名称 时间限制 内存限制 题目描述 输入格式 输出格式 样例1输入 样例1输出 样例1解释 样例2输入 样例2输出 样例2解释 样例3输入 样例3输出 样例3解释 子任务 提示 Python实现)
  • [样例2输入](#文章目录 @[toc] 试题编号 试题名称 时间限制 内存限制 题目描述 输入格式 输出格式 样例1输入 样例1输出 样例1解释 样例2输入 样例2输出 样例2解释 样例3输入 样例3输出 样例3解释 子任务 提示 Python实现)
  • [样例2输出](#文章目录 @[toc] 试题编号 试题名称 时间限制 内存限制 题目描述 输入格式 输出格式 样例1输入 样例1输出 样例1解释 样例2输入 样例2输出 样例2解释 样例3输入 样例3输出 样例3解释 子任务 提示 Python实现)
  • [样例2解释](#文章目录 @[toc] 试题编号 试题名称 时间限制 内存限制 题目描述 输入格式 输出格式 样例1输入 样例1输出 样例1解释 样例2输入 样例2输出 样例2解释 样例3输入 样例3输出 样例3解释 子任务 提示 Python实现)
  • [样例3输入](#文章目录 @[toc] 试题编号 试题名称 时间限制 内存限制 题目描述 输入格式 输出格式 样例1输入 样例1输出 样例1解释 样例2输入 样例2输出 样例2解释 样例3输入 样例3输出 样例3解释 子任务 提示 Python实现)
  • [样例3输出](#文章目录 @[toc] 试题编号 试题名称 时间限制 内存限制 题目描述 输入格式 输出格式 样例1输入 样例1输出 样例1解释 样例2输入 样例2输出 样例2解释 样例3输入 样例3输出 样例3解释 子任务 提示 Python实现)
  • [样例3解释](#文章目录 @[toc] 试题编号 试题名称 时间限制 内存限制 题目描述 输入格式 输出格式 样例1输入 样例1输出 样例1解释 样例2输入 样例2输出 样例2解释 样例3输入 样例3输出 样例3解释 子任务 提示 Python实现)
  • [子任务](#文章目录 @[toc] 试题编号 试题名称 时间限制 内存限制 题目描述 输入格式 输出格式 样例1输入 样例1输出 样例1解释 样例2输入 样例2输出 样例2解释 样例3输入 样例3输出 样例3解释 子任务 提示 Python实现)
  • [提示](#文章目录 @[toc] 试题编号 试题名称 时间限制 内存限制 题目描述 输入格式 输出格式 样例1输入 样例1输出 样例1解释 样例2输入 样例2输出 样例2解释 样例3输入 样例3输出 样例3解释 子任务 提示 Python实现)
  • [`Python`实现](#文章目录 @[toc] 试题编号 试题名称 时间限制 内存限制 题目描述 输入格式 输出格式 样例1输入 样例1输出 样例1解释 样例2输入 样例2输出 样例2解释 样例3输入 样例3输出 样例3解释 子任务 提示 Python实现)

试题编号

202209-2


试题名称

何以包邮?


时间限制

1.0s


内存限制

512.0MB


题目描述

  • 新学期伊始,适逢顿顿书城有购书满 x x x元包邮的活动,小 P P P同学欣然前往准备买些参考书
  • 一番浏览后,小 P P P初步筛选出 n n n本书加入购物车中,其中第 i i i本 1 ≤ i ≤ n 1 \leq i \leq n 1≤i≤n的价格为 a i a_{i} ai元
  • 考虑到预算有限,在最终付款前小 P P P决定再从购物车中删去几本书(也可以不删),使得剩余图书的价格总和 m m m在满足包邮条件 ( m ≥ x ) (m \geq x) (m≥x)的前提下最小
  • 试帮助小 P P P计算,最终选购哪些书可以在凑够 x x x元包邮的前提下花费最小

输入格式

  • 从标准输入读入数据
  • 输入的第一行包含空格分隔的两个正整数 n n n和 x x x,分别表示购物车中图书数量和包邮条件
  • 接下来输入 n n n行,其中第 i i i行 ( 1 ≤ i ≤ n ) (1 \leq i \leq n) (1≤i≤n)仅包含一个正整数 a i a_{i} ai,表示购物车中第 i i i本书的价格
  • 输入数据保证 n n n本书的价格总和不小于 x x x

输出格式

  • 输出到标准输出
  • 仅输出一个正整数,表示在满足包邮条件下的最小花费

样例1输入

shell 复制代码
4 100
20
90
60
60

样例1输出

shell 复制代码
110

样例1解释

  • 购买前两本书 ( 20 + 90 ) (20 + 90) (20+90)即可包邮且花费最小

样例2输入

shell 复制代码
3 30
15
40
30

样例2输出

shell 复制代码
30

样例2解释

  • 仅购买第三本书恰好可以满足包邮条件

样例3输入

shell 复制代码
2 90
50
50

样例3输出

shell 复制代码
100

样例3解释

  • 必须全部购买才能包邮

子任务

  • 70 % 70\% 70%的测试数据满足: n ≤ 15 n \leq 15 n≤15
  • 全部的测试数据满足: n ≤ 30 n \leq 30 n≤30,每本书的价格 a i ≤ 1 0 4 a_{i} \leq 10^{4} ai≤104且 x ≤ a 1 + a 2 + ⋯ + a n x \leq a_{1} + a_{2} + \cdots + a_{n} x≤a1+a2+⋯+an

提示

  • 对于 70 % 70\% 70%的测试数据,直接枚举所有可能的情况即可

Python实现

python 复制代码
n, x = map(int, input().split())

a = []
for _ in range(n):
    a.append(int(input()))

dp = [[0] * (sum(a) + 1) for _ in range(n + 1)]

res = sum(a)

for i in range(1, n + 1):
    for j in range(1, sum(a) + 1):
        if a[i - 1] > j:
            dp[i][j] = dp[i - 1][j]
        else:
            dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - a[i - 1]] + a[i - 1])

            if x <= dp[i][j] < res:
                res = dp[i][j]

print(res)

相关推荐
sin220119 分钟前
springboot数据校验报错
spring boot·后端·python
eric-sjq36 分钟前
基于xiaothink对Wanyv-50M模型进行c-eval评估
人工智能·python·语言模型·自然语言处理·github
是十一月末1 小时前
机器学习之KNN算法预测数据和数据可视化
人工智能·python·算法·机器学习·信息可视化
工业互联网专业1 小时前
基于OpenCV和Python的人脸识别系统_django
人工智能·python·opencv·django·毕业设计·源码·课程设计
杜小白也想的美2 小时前
FlaskAPI-初识
python·fastapi
一只搬砖的猹2 小时前
cJson系列——常用cJson库函数
linux·前端·javascript·python·物联网·mysql·json
CodeClimb2 小时前
【华为OD-E卷-租车骑绿道 100分(python、java、c++、js、c)】
java·javascript·c++·python·华为od
CodeClimb2 小时前
【华为OD-E卷-MVP争夺战 100分(python、java、c++、js、c)】
java·python·华为od
大霸王龙2 小时前
项目管理咨询公司专注于为各类项目提供全方位的管理咨询服务
python·django
Zik----2 小时前
Anaconda搭建Python虚拟环境并在Pycharm中配置(小白也能懂)
开发语言·人工智能·python·机器学习·pycharm