题意:给你n种物品,每种无限个,问恰好取k个物品能组成哪些重量.n<=1000,k<=1000,每种物品的重量<=1000.

我们搞出选取一种物品时的生成函数,那么只要对这个生成函数求k次幂就可以了.结果会很大所以我们可以在模意义下NTT来搞.然而会有一个问题,就是算出来的系数可能恰好是模数的倍数,比如说我们只用998244353就会WrongAnswer on test 20.然后我试了和异化多肽的模数1005060097一块来,然后,WrongAnswer on test 5…Excuse me? 然后看数据,k=1000,物品重量也比较大,分解一下1005060096,发现是2^19*27*71,然后我意识到了:这道题最大需要做最高次数2^20的NTT…然后枚举出了几个2^22*k+1的质数做模数…过了…

以下是枚举出来的一些模数和原根,均为2^22*k+1的形式(不保证k为奇数)

104857601 3

113246209 7

138412033 5

155189249 6

163577857 23

167772161 3

230686721 6

377487361 7

415236097 5

469762049 3

595591169 3

645922817 3

666894337 5

683671553 3

754974721 11

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int mod,rt;
int qpow(int a,int x){int ans=;for(;x;x>>=,a=a*1ll*a%mod)if(x&)ans=ans*1ll*a%mod;return ans;}
void ntt(int *a,int n,int sign){
for(int i=,j=,k;i<n;++i){
k=n;do j^=(k>>=);while(j<k);if(i<j)swap(a[i],a[j]);
}
for(int j=;j<=n;j<<=){
int m=j>>;long long wn=qpow(rt,(mod-+sign*(mod-)/j));;
for(int *p=a;p!=a+n;p+=j){
long long w=;
for(int k=;k<m;++k,w=w*wn%mod){
long long t=w*p[m+k]%mod;p[m+k]=(p[k]-t+mod)%mod;p[k]=(p[k]+t)%mod;
}
}
}
if(sign==-){
long long inv=qpow(n,mod-);for(int i=;i<n;++i)a[i]=a[i]*inv%mod;
}
}
const int maxn=*;
int a[maxn],w[maxn];
int ans[maxn];
int N; int n,k;
void NTT(int MOD,int RT){
mod=MOD;rt=RT;memset(a,,sizeof(a));
for(int i=;i<=n;++i)a[w[i]]=;
ntt(a,N,);
for(int i=;i<N;++i)a[i]=qpow(a[i],k);
ntt(a,N,-);//printf("%d\n",ans[1]);
for(int i=;i<N;++i)if(a[i])ans[i]=;
}
int main(){
scanf("%d%d",&n,&k);
int Max=;
for(int i=;i<=n;++i){scanf("%d",&w[i]);if(w[i]>Max)Max=w[i];}
N=;
while(N<=Max*k)N<<=;
//printf("%d\n",ans[0]);
NTT(,);NTT(,);NTT(,);
for(int i=;i<N;++i)if(ans[i])printf("%d ",i);
return ;
}

CodeForces 632E Thief in a Shop的更多相关文章

  1. codeforces 632E. Thief in a Shop fft

    题目链接 E. Thief in a Shop time limit per test 5 seconds memory limit per test 512 megabytes input stan ...

  2. CodeForces - 632E Thief in a Shop 完全背包

    632E:http://codeforces.com/problemset/problem/632/E 参考:https://blog.csdn.net/qq_21057881/article/det ...

  3. 2019.01.26 codeforces 632E. Thief in a Shop(生成函数)

    传送门 题意简述:给nnn个物件,物件iii有一个权值aia_iai​,可以选任意多个.现在要求选出kkk个物件出来(允许重复)问最后得到的权值和的种类数. n,k,ai≤1000n,k,a_i\le ...

  4. CodeForces - 632E Thief in a Shop (FFT+记忆化搜索)

    题意:有N种物品,每种物品有价值\(a_i\),每种物品可选任意多个,求拿k件物品,可能损失的价值分别为多少. 分析:相当于求\((a_1+a_2+...+a_n)^k\)中,有哪些项的系数不为0.做 ...

  5. Educational Codeforces Round 9 E. Thief in a Shop dp fft

    E. Thief in a Shop 题目连接: http://www.codeforces.com/contest/632/problem/E Description A thief made hi ...

  6. codeforces 632+ E. Thief in a Shop

    E. Thief in a Shop time limit per test 5 seconds memory limit per test 512 megabytes input standard ...

  7. codeforces Educational Codeforces Round 9 E - Thief in a Shop

    E - Thief in a Shop 题目大意:给你n ( n <= 1000)个物品每个物品的价值为ai (ai <= 1000),你只能恰好取k个物品,问你能组成哪些价值. 思路:我 ...

  8. Educational Codeforces Round 9 E. Thief in a Shop NTT

    E. Thief in a Shop   A thief made his way to a shop. As usual he has his lucky knapsack with him. Th ...

  9. C - Thief in a Shop - dp完全背包-FFT生成函数

    C - Thief in a Shop 思路 :严格的控制好k的这个数量,这就是个裸完全背包问题.(复杂度最极端会到1e9) 他们随意原来随意组合的方案,与他们都减去 最小的 一个 a[ i ] 组合 ...

随机推荐

  1. Apache Tomcat 8.5 安全配置与高并发优化

    通常我们在生产环境中,Tomcat的默认配置显然不能满足我们的产品需求,所以很多时候都需要对Tomcat的配置进行调优,以下综合我自己的经验来配置 Tomcat 安全与优化情况,如果你有更好的方案,请 ...

  2. 20145234黄斐《网络对抗技术》实验一,逆向及Bof基础实践

    实践内容 本次实践的对象是一个名为hf20145234的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另一个代码片段, ...

  3. CF 741 D. Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths

    D. Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths http://codeforces.com/problemset/probl ...

  4. 基于Redis+Kafka的首页曝光过滤方案

    本文来自网易云社区 作者:李勇 背景 网易美学首页除了banner和四个固定位,大部分都是通过算法推荐获取的内容,其中的内容包括心得.合辑.视频及问答等.现在需要实现的是当推荐内容在用户屏幕曝光后(即 ...

  5. 如何设置虚拟化的centos内、外网络通畅

    首先要去确定你的本机(本地物理机)是通过以太网(插网线)上网的,还是通过wifi上网的.这个很重要. 如果是通过以太网去上网,那么虚拟化出来的系统,网络配置应当选择桥接模式. 当然了,也不一定非要用桥 ...

  6. 2019年猪年海报PSD模板-第五部分

    14套精美猪年海报,免费猪年海报,下载地址:百度网盘,https://pan.baidu.com/s/1CuZKPmFbbSBvzSXoCt2few                

  7. WEB网站测试心得整理

    一.输入框: 1.正常的字母/文字/数字(正常流程的测试): 2.重复提交(输入内容后,重复点击提交按钮): 3.纯异常字符/正常输入夹杂异常字符(!@#¥%……&**等等): 4.长度限制( ...

  8. Pyhton网络爬虫实例_豆瓣电影排行榜_BeautifulSoup4方法爬取

    -----------------------------------------------------------学无止境------------------------------------- ...

  9. [JSON].toXMLString()

    语法:[JSON].toXMLString() 返回:[String] 说明:将[JSON]实例转换成XML格式结果. 示例: <% jsonString = "{div: 'hell ...

  10. 【template、import、include】微信小程序:模板(template)、引用(import、include)说明

    模板(template): 定义模板 <template name="[String]"> <!-- 模板代码 --> <view> <t ...