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

相关推荐
denghai邓海8 分钟前
红黑树删除之向上调整
python·b+树
封步宇AIGC34 分钟前
量化交易系统开发-实时行情自动化交易-3.4.1.2.A股交易数据
人工智能·python·机器学习·数据挖掘
何曾参静谧35 分钟前
「Py」Python基础篇 之 Python都可以做哪些自动化?
开发语言·python·自动化
Prejudices38 分钟前
C++如何调用Python脚本
开发语言·c++·python
我狠狠地刷刷刷刷刷1 小时前
中文分词模拟器
开发语言·python·算法
Jam-Young1 小时前
Python的装饰器
开发语言·python
Mr.咕咕1 小时前
Django 搭建数据管理web——商品管理
前端·python·django
AnFany2 小时前
LeetCode【0028】找出字符串中第一个匹配项的下标
python·算法·leetcode·字符串·kmp·字符串匹配
爪哇学长2 小时前
Java API类与接口:日期类型与集合的使用
java·开发语言·python
封步宇AIGC2 小时前
量化交易系统开发-实时行情自动化交易-3.4.1.6.A股宏观经济数据
人工智能·python·机器学习·数据挖掘