随笔分类 - 数论—生成函数
摘要:想了好长时间最后发现真是石乐志 第一反应就是两边之和大于第三边,但是这个东西必须要满足三次…… 任意的两边之和合通过生成函数套路+FFT求出来(记得去掉重复选取的),然后这任意两边之和大于任意第三边可以用一个前缀和求得(同样记得去重,前缀和里面一定包含前两条边),这样我们就得到了任意两边之和大于任意
阅读全文
摘要:还是没有理解透原根……题目提示其实挺明显的,M是质数,然后1 include include using namespace std; const int N=20005,mod=1004535809,g=3; int n,m,x,k,s[N],d=2,id[N],lm,bt,re[N]; long
阅读全文
摘要:瞎搞居然1A,真是吃鲸 n的范围只有聪明人能看见……建议读题3遍 首先看计数就想到生成函数,列出多项式A(x),然后分别考虑123 对于选一个的直接计数即可; 对于选两个的,\\( A(x)^2 \\),然后注意这里两个选一样的是不合法的,各出现了一次,所以减掉,然后这里是有顺序的,所以最后再除以2
阅读全文
摘要:用生成函数套路推一推,推完老想NTT……实际上把这个多项式乘法看成dp然后前缀和优化一下即可 cpp include include using namespace std; const int N=1005,mod=1000000; int n,m,c[N],l,r,f[N 100],s[N],s
阅读全文
摘要:根据套路列出式子:\\( \prod_{i=1}^{n}\sum_{j=0}^{c[i]}\frac{x^j}{j!} \\),然后暴力展开即可 cpp include include include using namespace std; const int N=205; int n,m,c[N
阅读全文
摘要:指数型生成函数,推一推可得: $$ (1+\frac{x^1}{1!}+\frac{x^2}{2!}+\frac{x^3}{3!}+...)^2+(1+\frac{x^2}{2!}+\frac{x^4}{4!}+\frac{x^6}{6!}+...)^2 $$ $$ =e^{2x}+(\frac{e
阅读全文
摘要:按套路列生成函数式子然后暴力乘,这样复杂度看起来非常大,但是可以动态维护最大值,这样就是O(能过)的了 仔细想想这个多项式暴力乘理解成背包dp也行?
阅读全文
摘要:列出生成函数的多项式之后暴力乘即可 cpp include include include using namespace std; const int N=20005; int n,x,y,z,a[N],b[N]; int main() { while(scanf("%d%d%d",&x,&y,&
阅读全文
摘要:预处理出完全平方数就和普通的生成函数解整数拆分一样了 cpp include include using namespace std; const int N=605; int n,m,q[N],a[N],b[N]; int main() { for(int i=1;i
阅读全文
摘要:老是想着化简,实际上O(n^3)就行了…… 写成生成函数是\\( \prod_{i=1}^{n}(1+x^i+2^{2i}+...+x^{ \left \lfloor \frac{n}{i} \right \rfloor }) \\),暴力乘即可 cpp include include using
阅读全文
摘要:首先根据生成函数的套路,这个可以写成: $$ \prod_{i=1}^{n}(1+x^1+x^2+...+x^{c[i]}) $$ 然后化简 $$ =\prod_{i=1}^{n}\frac{1 x^{c[i]+1}}{1 x} $$ $$ =\prod_{i=1}^{n}\frac{1}{1 x}
阅读全文
摘要:承德汉堡:\\( 1+x^2+x^4+...=\frac{1}{1 x^2} \\) 可乐:\\(1+x \\) 鸡腿:\\( 1+x+x^2=\frac{x^3 1}{x 1} \\) 蜜桃多:\\( x+x^3+x^5+...=\frac{x}{1 x^2} \\) 鸡块:\\( 1+x^4+x
阅读全文

浙公网安备 33010602011771号