题意: 有n类物品,第i种物品权值为$val(i)$,有$cnt(i)$个,现在你可以选出一些物品排成一个序列(假设有m个), 记第i个物品种类为$x_i$,最大化$\sum_{i=1}^m{i * val(x_i)}$ 解法: 只要将物品分为两类即可. 对于$val(i) \ge 0$的直接从小到大排列插入序列末端即可,然后在序列首端插入物品, 记当前后缀和为$suffixsum$. 接下来从大到小插入$val(i)<0$的物品,每插入一个会产生$suffixsum+val(i)$的答案贡献,…