【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)

相关推荐
zoujiahui_201826 分钟前
vscode中创建python虚拟环境的方法
ide·vscode·python
杨荧2 小时前
基于大数据的美食视频播放数据可视化系统 Python+Django+Vue.js
大数据·前端·javascript·vue.js·spring boot·后端·python
牛客企业服务3 小时前
AI面试系统助手深度评测:6大主流工具对比分析
数据库·人工智能·python·面试·职场和发展·数据挖掘·求职招聘
囚~徒~3 小时前
uwsgi 启动 django 服务
python·django·sqlite
老歌老听老掉牙4 小时前
SymPy 中 atan2(y, x)函数的深度解析
python·sympy
路人蛃6 小时前
Scikit-learn - 机器学习库初步了解
人工智能·python·深度学习·机器学习·scikit-learn·交友
Nep&Preception8 小时前
vasp计算弹性常数
开发语言·python
费弗里8 小时前
Python全栈应用开发神器fac 0.4.0新版本升级指南&更新日志
python·dash
Ice__Cai8 小时前
Python 基础详解:数据类型(Data Types)—— 程序的“数据基石”
开发语言·后端·python·数据类型
lilv669 小时前
python中用xlrd、xlwt读取和写入Excel中的日期值
开发语言·python·excel