U492147 【不是模板】01背包

题目背景

$NOIP$ 马上就要到了,爱思考的syx在复习01背包时想到了这样一个问题,给定 $ n$ 个物品,如何在最短的时间内得到背包容量分别为 $1,2,\cdots m$ 的最大价值(每一件物品只能取一次,不同的背包容量相互之间均为独立的问题). 聪明的syx马上就想到了一个绝妙的方法,但是他觉得你不够机智,所以他把物品的体积都缩小了来考考你.

题目描述

~~就是普通的01背包问题~~ 给出 $n$ 个物品 , 每个物品有体积 $s_i$ 价值 $v_i$ , 对于 $i=1\cdots m$ 求容量为 $i$ 的背包最多能放多少价值 . 提示:注意数据范围 .

输入格式

第一行两个正整数$n,m$表示物品数量和背包的最大容量。 接下来 $n$ 行,每行两个整数 $s$,$v$,分别表示每个物品的体积和价值。

输出格式

输出 $m$ 个数,分别表示背包容量为$1,2,3...,m$ 时的最大价值。

说明/提示

20%的数据:$n\times m \le 100000$ 100%的数据:$1\le n \le 10^6;1≤m≤10^5;1≤s≤300;1≤v≤10^9$ 如果需要题解,可以看[题解](https://www.cnblogs.com/youlv/p/18438068) 题目来自一本通高手训练,数据为自造