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

相关推荐
FreakStudio1 小时前
全网最适合入门的面向对象编程教程:56 Python字符串与序列化-正则表达式和re模块应用
python·单片机·嵌入式·面向对象·电子diy
丶21361 小时前
【CUDA】【PyTorch】安装 PyTorch 与 CUDA 11.7 的详细步骤
人工智能·pytorch·python
_.Switch2 小时前
Python Web 应用中的 API 网关集成与优化
开发语言·前端·后端·python·架构·log4j
一个闪现必杀技2 小时前
Python入门--函数
开发语言·python·青少年编程·pycharm
小鹿( ﹡ˆoˆ﹡ )3 小时前
探索IP协议的神秘面纱:Python中的网络通信
python·tcp/ip·php
卷心菜小温3 小时前
【BUG】P-tuningv2微调ChatGLM2-6B时所踩的坑
python·深度学习·语言模型·nlp·bug
陈苏同学3 小时前
4. 将pycharm本地项目同步到(Linux)服务器上——深度学习·科研实践·从0到1
linux·服务器·ide·人工智能·python·深度学习·pycharm
唐家小妹3 小时前
介绍一款开源的 Modern GUI PySide6 / PyQt6的使用
python·pyqt
羊小猪~~4 小时前
深度学习项目----用LSTM模型预测股价(包含LSTM网络简介,代码数据均可下载)
pytorch·python·rnn·深度学习·机器学习·数据分析·lstm
Marst Code4 小时前
(Django)初步使用
后端·python·django