题目大意:有一个小偷,拿$k$个东西,有$n$种产品,每种产品都有无限多个。对于每个第$i$ 种产品,它的价值是$A_i$。可能偷走的物品价值之和。

题解:对于所有的物品构造生成函数$F(x)=\sum\limits_{i\in A}x^i$,取$k$个物品相当于取其中的$k$项相乘,输出$F^k(x)$中不为零的项就行了。(这道题模数$998244353$和$1004535809$都被$hack$了,看$Weng\_weijie\;dalao$的题解得双模数没被卡,于是就$A$了)(这道题似乎可以用$DP$,但我不怎么会)

卡点:

C++ Code:

#include <cstdio>
#include <algorithm>
#define maxn 1 << 20 | 3
const int G = 3;
int mod, ans;
int lim, ilim, s, rev[maxn], Wn[maxn];
inline int pw(int base, long long p) {
base %= mod, p %= mod - 1;
int ans = 1;
for (; p; p >>= 1, base = 1ll * base * base % mod) if (p & 1) ans = 1ll * ans * base % mod;
return ans;
}
inline int Inv(int x) {
return pw(x, mod - 2);
}
inline void up(int &a, int b) {if ((a += b) >= mod) a -= mod;}
inline void NTT(int *A, int op) {
for (int i = 0; i < lim; i++) if (i < rev[i]) std::swap(A[i], A[rev[i]]);
for (int mid = 1; mid < lim; mid <<= 1) {
int t = lim / mid >> 1;
for (int i = 0; i < lim; i += mid << 1) {
for (int j = 0; j < mid; j++) {
int W = op ? Wn[t * j] : Wn[lim - t * j];
int X = A[i + j], Y = 1ll * A[i + j + mid] * W % mod;
up(A[i + j], Y), up(A[i + j + mid] = X, mod - Y);
}
}
}
if (!op) for (int i = 0; i < lim; i++) A[i] = 1ll * A[i] * ilim % mod;
}
inline void init(int n, int mod) {
::mod = mod;
lim = 1, s = -1; while (lim < n) lim <<= 1, s++; ilim = Inv(lim);
for (int i = 0; i < lim; i++) rev[i] = rev[i >> 1] >> 1 | (i & 1) << s;
int W = pw(G, (mod - 1) / lim);
Wn[0] = 1; for (int i = 1; i <= lim; i++) Wn[i] = 1ll * Wn[i - 1] * W % mod;
}
int n, k;
int a[maxn], b[maxn];
int main() {
scanf("%d%d", &n, &k);
for (int i = 0, tmp; i < n; i++) scanf("%d", &tmp), a[tmp] = b[tmp] = 1;
init(1 << 20, 998244353);
NTT(a, 1);
for (int i = 0; i < lim; i++) a[i] = pw(a[i], k);
NTT(a, 0);
init(1 << 20, 1004535809);
NTT(b, 1);
for (int i = 0; i < lim; i++) b[i] = pw(b[i], k);
NTT(b, 0);
for (int i = 0; i < lim; i++) if (a[i] | b[i]) printf("%d ", i);
return 0;
}

  

最新文章

  1. 【译】Unity3D Shader 新手教程(5/6) &mdash;&mdash; Bumped Diffuse Shader
  2. BZOJ 3196 Tyvj 1730 二逼平衡树 ——树状数组套主席树
  3. Linux SVN 命令详解(zz)
  4. maven-腾讯SDK(QQ)接口java引入pom配置
  5. startDiscovery() and startLeScan().
  6. sql快捷键
  7. [ZOJ 3623] Battle Ships
  8. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(41)-组织架构
  9. asp.net mvc生命周期学习
  10. PHP: 深入pack/unpack &lt;转&gt; [链接]
  11. if判断 -z -n 参数
  12. Java进阶(三十二) HttpClient使用详解
  13. 关系型数据库管理系统(RDBMS)与非关系型数据库(NoSQL)之间的区别
  14. Internet Explorer 10 administration IE10管理
  15. django ORM聚合函数
  16. Kubernetes(k8s)入门、单机版安装、kuberctl指令、k8s服务实例
  17. (转)先装VS后装IIS产生问题的解决办法
  18. idea 设置编译的编码方式
  19. 使用Maven部署构件至私服
  20. 学习Web Service、wcf、webapi的区别

热门文章

  1. Mac openssl 和curl源码编译
  2. view的superview的变换
  3. AMD、CMD、Common规范及对比
  4. 使用docker搭建“企业级镜像仓库”Harbor
  5. LNMP+HAProxy+Keepalived负载均衡 - 基础服务准备
  6. PHP开发环境搭建一:PHP集成环境XAMPP 的安装与配置
  7. Python学习-django-Model操作
  8. 用python实现【五猴分桃】问题
  9. Linux与BSD不同
  10. Android stadio Switch repository Android stadio切换仓库