问题 E: 序列操作Ⅰ
时间限制: 1 Sec 内存限制: 128 MB
[提交][状态][讨论版]
题目描述
给定长度为 N 的正整数序列 A_1, A_2, A_3,…, A_N, 从中选出若干个数,使它们的和是 M,求有多少种选择方案。

输入
第一行是两个数字,表示 N 和 M。(N,M<1000)

输出
一个数字,表示和为 M 的组合的个数。

样例输入

4 4
1 1 2 2

样例输出

3

提示
/*
很基础的01背包,画二维表就很容易得出状态转移方程。
要记住一开始要用最直观的方法写,
即不要一开始就用滚动数组空间优化,
要常规写法写好没有错误了再进行空间优化,
这样解题才不容易出错,思路也更清晰。
*/
开始最直观写法:

#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e3+5;
int a[maxn];
int dp[maxn][maxn];
int main()
{int n,m;cin>>n>>m;for(int i = 1; i <= n; i++){cin>>a[i];}for(int i = 1; i <= n; i++){for(int j = 1; j <= m; j++){if(j-a[i]==0){dp[i][j] = dp[i-1][j] + 1;}else if(j-a[i]<0){dp[i][j] = dp[i-1][j];}else{dp[i][j] = dp[i-1][j] + dp[i-1][j-a[i]];}}}cout<<dp[n][m]<<endl;return 0;
}

滚动数组空间优化及常数优化:

#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e3+5;
int a[maxn];
int dp[maxn];
int main()
{int n,m;cin>>n>>m;for(int i = 1; i <= n; i++){cin>>a[i];}for(int i = 1; i <= n; i++){for(int j = m; j >= a[i]; j--){dp[j]+=(j-a[i]==0?1:dp[j-a[i]]);}}cout<<dp[m]<<endl;return 0;
}

问题 E: 序列操作Ⅰ(01背包)相关推荐

  1. 【Atcoder agc020 C】Median Sum,序列子集和中位数,bitset,01背包

    problem C - Median Sum / Time Limit: 2 sec / Memory Limit: 512 MB Score : 700 points Problem Stateme ...

  2. 01背包 (dp专题)

    01背包是在M件物品取出若干件放在空间为W的背包里,每件物品的体积为W1,W2至Wn,与之相对应的价值为P1,P2至Pn.01背包是背包问题中最简单的问题.01背包的约束条件是给定几种物品,每种物品有 ...

  3. 蓝桥杯 波动数列 01背包

    借鉴自:https://blog.csdn.net/wr132/article/details/43861145 https://blog.csdn.net/linqing360/article/de ...

  4. 背包算法(一)-01背包-史上最详细解答

    背包算法(一)-01背包-史上最详细解答 1. 题目 2. 分析 2.1 状态表示 2.2 状态计算 3. 实现 4. 优化 5. 测试 1. 题目 问题描述:有n件物品和容量为m的背包,给出i件物品 ...

  5. 01背包输出路径、完全背包、多重背包

    背包问题 一.01 Knapsack(输出路径- >选的物品) 二.完全背包 1.三重循环,极可能TLE,滚动数组优化后j逆向枚举 2.二重,优化消去变量k(没有特别厘清,但可以直接从完全背包角 ...

  6. Codeforces Round #104 (Div. 2) E DP(01背包模型) +组和+除法取模求逆元

    题意: 规定只包含4或7的数为幸运数字,给定n个数的序列,求他的子序列,使得该子序列的长度为k并且满足该子序列中不存在相同的两个幸运数字.问一共寻在多少种可能.(只要该数的下标不同则认为是不同的序列) ...

  7. 【BZOJ-1858】序列操作 线段树

    1858: [Scoi2010]序列操作 Time Limit: 10 Sec  Memory Limit: 64 MB Submit: 1961  Solved: 991 [Submit][Stat ...

  8. 【常规的01背包 POJ3624 UVA562 HDU2546 HDU3466 poj1745】

    POJ3624 有N个物品,分别有不同的重量Wi和价值Di,Bessie只能带走重量不超过M的物品,要是总价值最大,并输出总价值 //#include <bits/stdc++.h> #i ...

  9. 动态规划-----------01背包,完全背包与多重背包

    P01: 01背包问题 题目 有N件物品和一个容量为V的背包.第i件物品的费用是c[i],价值是w[i].求解将哪些物品装入背包可使价值总和最大. 基本思路 这是最基础的背包问题,特点是:每种物品仅有 ...

最新文章

  1. 求求你别再写上千行的类了,试试这些牛逼的重构技巧吧
  2. 向前欧拉公式 matlab_你可能不知道的MATLAB操作#第三话
  3. 人身三流指什么_电气隔离是什么意思呢?
  4. linux rm命令参数及用法详解---linux删除文件或目录命令
  5. 我和女实习生那些不想说的故事
  6. sql跨表查询_白话django之ORM的查询语句
  7. Apache模块管理
  8. linux命令音乐视频合并,Linux下基于命令行的音乐播放器 (1)
  9. 文件错误关于hibernate中报Duplicate class/entity mapping org.model.User错的问题
  10. 从想当亿万富翁到职场、创业、爱情、抑郁、学医学武,我的程序人生
  11. wpe手机中文汉化版下载_wpe中文3.0专业版
  12. switchHosts下载
  13. JAVA从入门到放弃01
  14. C语言中%d %.2d %2d %02d的区别
  15. excel如何调整日期格式的方法
  16. Cosmos 白皮书
  17. 迎接2012新赛季——HDOJ系列热身赛(4)部分结题报告
  18. 0对任何数取余_大数取余
  19. 关于实现StarGen的思考记录
  20. JS中常见的 “Uncaught TypeError: XXXX is not a function” 错误解析

热门文章

  1. 如何删除 AWS 资源以及关闭账户(来自亚马逊官方提供文档,记录一下方便查看)
  2. python实现rsa加密源代码_python实现RSA加密(解密)算法
  3. 算法设计原则验证实验报告_算法设计与分析实验报告 统计数字问题
  4. PyTorch教程(三):索引与切片
  5. Elasticsearch相关配置
  6. 从零开始学习docker(二)网络
  7. PandasGUI:使用图形用户界面分析 Pandas 数据帧
  8. 实用脚本!利用 Python 对 PDF 进行加密、解密操作,代码拿走就用!
  9. GAN生成对抗网络-CGAN原理与基本实现-条件生成对抗网络04
  10. rabbitmq-5-案例2-简单的案例+exchange