洛谷P1049 [NOIP2001 普及组] 装箱问题
本题就是一个简单的01背包问题
1.因为每个物品只能选一次,而且要使箱子的剩余空间为最小。所以可以确定属性为 MAX
2.由于是从n个物品里面选i个物品 那么就是选出的i个物品的空间总和要尽可能的大
就可以得到动态规划的表达式
f[i][j] = max(f[i-1][j],f[i-1][j-w[i]] + w[i]);
就可以得到完整的代码
#include <iostream> using namespace std;
const int N = 55 , M = 20010;
int f[M][M];
int w[N];
int n;
int v;
int main()
{
cin >> v >> n;
for ( int i = 1; i <= n; i++ ) cin >> w[i]; for( int i = 1 ; i <= n ; i++ )
for( int j = 0 ; j <= v ; j++ )
{
f[i][j] = f[i -1][j];
if( j >= w[i] ) f[i][j] = max(f[i-1][j],f[i-1][j-w[i]] + w[i]);
}
cout << v - f[n][v];
return 0;
}
我觉得这个还是不够好,由于此题是线性Dp所以我们用滚动数组进行优化
得到以下代码,一下就变快了不少呢
#include <iostream> using namespace std;
const int N = 55 , M = 20010;
int f[M];
int w[N];
int n;
int v;
int main()
{
cin >> v >> n;
for ( int i = 1; i <= n; i++ ) cin >> w[i]; for ( int i = 1 ; i <= n; i++ )
for ( int j = v; j >= w[i]; j-- )
{
f[j] = max(f[j],f[j - w[i]] + w[i]);
}
cout << v - f[v];
return 0;
}
洛谷P1049 [NOIP2001 普及组] 装箱问题的更多相关文章
- 动态规划 洛谷P1048 [NOIP2005 普及组] 采药
洛谷P1048 [NOIP2005 普及组] 采药 洛谷的一个谱架-的题目,考的是01背包问题,接下来分享一下我的题解代码. AC通过图: 我的代码: 1 //动态规划 洛谷P1048 [NOIP20 ...
- 求最长子序列(非连续)的STL方法 - 洛谷P1020 [NOIP1999 普及组] 导弹拦截
先给出例题:P1020 [NOIP1999 普及组] 导弹拦截 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 大佬题解:P1020 [NOIP1999 普及组] 导弹拦截 - 洛谷 ...
- 洛谷 P1045 & [NOIP2003普及组] 麦森数
题目链接 https://www.luogu.org/problemnew/show/P1045 题目大意 本题目的主要意思就是给定一个p,求2p-1的位数和后500位数. 解题思路 首先看一下数据范 ...
- 洛谷 P1025 & [NOIP2001提高组] 数的划分(搜索剪枝)
题目链接 https://www.luogu.org/problemnew/show/P1025 解题思路 一道简单的dfs题,但是需要剪枝,否则会TLE. 我们用dfs(a,u,num)来表示上一个 ...
- 洛谷P1077 [NOIP2012普及组]摆花 [2017年四月计划 动态规划14]
P1077 摆花 题目描述 小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共m盆.通过调查顾客的喜好,小明列出了顾客最喜欢的n种花,从1到n标号.为了在门口展出更多种花,规定第i种花不能 ...
- 洛谷——P1980 [NOIP2013 普及组] 计数问题
题目描述 试计算在区间 11 到 nn的所有整数中,数字x(0 ≤ x ≤ 9)x(0≤x≤9)共出现了多少次?例如,在 11到1111中,即在 1,2,3,4,5,6,7,8,9,10,111,2, ...
- 洛谷 1067 NOIP2009 普及组 多项式输出
[题解] 一道简单的模拟题.需要判一些特殊情况:第一项的正号不用输出,x的一次项不用输出指数,系数为0的项不用输出等等,稍微细心一下就好. #include<cstdio> #includ ...
- [洛谷P1062/NOIP2006普及组] 数列
首先题面是这样的: 给定一个正整数 k(3≤k≤15) ,把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当 k=3 时,这个序列是: 1,3,4,9,10,12,13,- ...
- [洛谷P1095]NOIP2007 普及组T3 守望者的逃离
问题描述 恶魔猎手尤迪安野心勃勃,他背叛了暗夜精灵,率领深藏在海底的娜迦族企图叛变.守望者在与尤迪安的交锋中遭遇了围杀,被困在一个荒芜的大岛上.为了杀死守望者,尤迪安开始对这个荒岛施咒,这座岛很快就会 ...
随机推荐
- Solution -「NOI.AC 省选膜你赛」寄蒜几盒
题目 题意简述 给定一个含有 \(n\) 个顶点的凸多边形( \(n\) 是偶数),对于每一对相对的边(即中间有 \(\frac{n}2-1\) 条其它边),延长它们以将平面分割为多块,并把包含原 ...
- suse 12 sp3 利用shell脚本离线编译安装ansible
# 测试环境是suse 12 sp3的系统,机器都是内网使用的,安装ansible真的很难顶 # 测试环境使用的python版本:2.7.13-27 # 此脚本只在本人测试环境成功,其他环境,需要选择 ...
- 『德不孤』Pytest框架 — 5、Pytest失败重试
Pytest失败重试就是,在执行一次测试脚本时,如果一个测试用例执行结果失败了,则重新执行该测试用例. 前提: Pytest测试框架失败重试需要下载pytest-rerunfailures插件. 安装 ...
- python数据结构:数组和列表
线性结构有两种:数组和列表 array和list 其中list各项操作的时间复杂度如下 因为insert是在头部插入 所以列表所有元素后移,时间复杂度为O(n) remove移除列表中某个值的第一个匹 ...
- C# InterFace 接口
接口设计方式 自顶向下 (如图所示),自底向上. 接口成员: 事件 public interface IDrawingObject { event EventHandler ShapeChanged; ...
- Java课程设计---修改学生基本信息
1.修改窗体 2.在StudentDao中增加修改学生信息的方法 /** * 修改的方法 * * @param student * @return * @throws SQLException */ ...
- vue项目npm run dev 报错error in ./src/main.js Module build failed: ReferenceError: Unknown plugin "transform-vue-jsx" specified in......
问题: vue项目npm run dev运行时报错,如下图: 原因: 缺少组件 解决办法: 安装相应的组件: npm install babel-plugin-transform-vue-jsx ...
- Python获取当前时间或者当前时间戳【转】
取得时间相关的信息的话,要用到python time模块,python time模块里面有很多非常好用的功能,你可以去官方文档了解下,要取的当前时间的话,要取得当前时间的时间戳,时间戳好像是1970年 ...
- LeetCode-078-子集
子集 题目描述:给你一个整数数组 nums ,数组中的元素 互不相同 .返回该数组所有可能的子集(幂集). 解集 不能 包含重复的子集.你可以按 任意顺序 返回解集. 示例说明请见LeetCode官网 ...
- 昇思MindSpore全场景AI框架 1.6版本,更高的开发效率,更好地服务开发者
摘要:本文带大家快速浏览昇思MindSpore全场景AI框架1.6版本的关键特性. 全新的昇思MindSpore全场景AI框架1.6版本已发布,此版本中昇思MindSpore全场景AI框架易用性不断改 ...