不得不说是一道多项式神题了。

虽然说颓代码颓的很厉害不过最终A掉了。

好好讲一讲这道题。

涉及的知识点是:高阶导数,NTT,指数型母函数,泰勒公式,以及意志力和数学推导能力。

那就开始了。

一个测试点一个测试点来。

首先注意到$b[i]=lim_{i=1}^{i<=n}(|=a[i])$

1.$n,k<=4$ 直接爆搜。$O(2^{nk})$

2.$n,k<=10$考虑状压dp。

设$dp[i][s]$为$a$的$i$项前缀或和。

那么有转移$dp[i+1][s|t]+=dp[i][s]*[(s|t)!=s]$

这样是$O(n4^{k})$

3.$n,k<=300$。

首先优化状压dp,我们其实并不关心状压dp中状态的1是那些1,我们只关心有几个1。

那么得到$dp[i][j]$前$i$位的$a$或和中有$j$个1,且清楚是哪些1的方案数。

$dp[i][j]=\sum\limits_{k=0}^{j-1}dp[i-1][k]2^kC_{K-k}^{j-k}$

复杂度是$O(nk^2)$

4.59分

优化上述$dp$

其实可以看到卷积的影子吧。

设$g[i][j]$前$i$位的$a$或和中有$j$个1,不清楚是那些1的方案数。

$g[i][j]=\sum\limits_{k=0}^{j-1}g[i-1][k]2^kC_j^{j-k}$

那么$dp[i][j]=C_K^jg[i][j]$

可以看出来g是一个卷积的形式了。

那么复杂度$O(nklogk)$

5.AC

优化上述dp。

改变g的枚举方式。

$g[i][j]=\sum\limits_{k=1}^{j}g[i-1][j-k]2^{j-k}C_{j}^{k}$

展开组合数。

$g[i][j]=\sum\limits_{k=1}^{j}g[i-1][j-k]2^{j-k}\frac{j!}{k!(j-k)!}$

那么也就是说

$\frac{g[i][j]}{j!}=\frac{\sum\limits_{k=1}^{j-1}g[i-1][j-k]2^{j-k}}{(j-k)!}\frac{1}{k!}$

可以看出指数型母函数的样子了。

生成函数$G(x)=\sum\limits_{k=1}^{j-1}\frac{g[i][j]}{j!}$

引入泰勒公式。

$+\infty$为正无穷。

对于任何一个函数$f$

$f(x)=\sum\limits_{i=0}^{+\infty}\frac{f^{(i)}(x_0)(x-x_0)^i}{i!}$

证明:

  对$f^{(m)}(x_0)(x-x_0)^m$求$m$阶导。

  首先$x^n$的导数为$nx^{n-1}$

  那么

  1.$mf^{(m)}(x_0)(x-x_0)^{m-1}$

  2.$m(m-1)f^{(m)}(x_0)(x-x_0)^{m-2}$

  ......

  m.$m!f^{(m)}(x_0)$

  在往后都是0了,$m!f(x_0)$是常数。

  那么其实$f^{(m)}(x_0)=m!f(x_0)$因为其他项带$(x-x_0)$,所以都是0。

  除掉$m!$

  $f(x)=\sum\limits_{i=0}^{+\infty}\frac{f^{(i)}(x_0)(x-x_0)^i}{i!}$

  得到泰勒公式的结论了。

证毕。

第二个引理$e^x=\sum\limits_{i=0}^{+\infty}\frac{x^i}{i!}$

证明:

  首先$e^x$的导数仍然是$e^x$

  $e^x=\sum\limits_{i=0}^{+\infty}\frac{f^{(i)}(x_0)(x-x_0)^i}{i!}$

  设$\frac{f^{(i)}(x_0)}{i!}=a_i$

  $e^x=\sum\limits_{i=0}^{+\infty}\frac{a_i(x-x_0)^i}{i!}$

  两侧取导。

  $e^x=0+\sum\limits_{i=1}^{+\infty}ia_{i-1}(x-x_0)^{i-1}$

  $a_0=a_1$

  $a_1=2a_2$

  $a_2=3a_3$

  ...

  $a_{n-1}=na_n$

  那么解得$a_i=\frac{a_0}{i!}$

  回代。

  $e^x=a_0\sum\limits_{i=0}^{+\infty}\frac{x^i}{i!}$

  当$x=0$时

  $e^x=1=a_0\sum\limits_{i=0}^{+\infty}\frac{x^i}{i!}$

  $a_0=1$

  $e^x=\sum\limits_{i=0}^{+\infty}\frac{x^i}{i!}$

证毕。

推推式子得到了$G_i(x)=G_{i-1}(2x)*(e^x-1)$是卷积。

用$(G(x))[x^i]$代表多项式$G(x)$在$x^i$处的系数。

代入$\frac{g[i][j]}{j!}=\frac{\sum\limits_{k=1}^{j}g[i-1][j-k]2^{j-k}}{(j-k)!}\frac{1}{k!}$

那么也就等价于。

$(G_i(x))[x^j]=\sum\limits_{k=1}^{j}(G_{i-1}(x))[x^{j-k}]2^{j-k}((e^x)[x^k])$

解释一下。

$G(2x)$在$[x^k]$的系数是$\frac{g[i-1][k]}{k!}2^k$

$e^x$在$[x^k]$的系数是$\frac{1}{k!}$

好那么有这个式子了。

继续。

$G_0(x)=1$

回代得到。

$G_n(x)=\prod\limits_{i=0}^{n-1}(e^{2^ix}-1)$

这个形式可以用类似快速幂的方式优化。

快速幂我不知道怎么想出来的只知道是对的。

那么也就是说可以在$O(nlog^2n)$时间内解决。

常数巨大。

「考试」 Or的更多相关文章

  1. 「考试」CSP-S 2020

    乱扯 爆炸的过程是这样的 写了\(2.5h\)的\(T1\)过不去大样例,自闭了 决定调\(T2\)然后过了样例但事实上写的完全是假的 这个时候突然\(T1\)灵光一闪就没再看\(T2\)了 然后就一 ...

  2. 「考试」noip模拟9,11,13

    9.1 辣鸡 可以把答案分成 每个矩形内部连线 和 矩形之间的连线 两部分 前半部分即为\(2(w-1)(h-1)\),后半部分可以模拟求(就是讨论四种相邻的情况) 如果\(n^2\)选择暴力模拟是有 ...

  3. 「考试」$5T$

    啊因为最近题实在是好啊,只能四五篇四五篇写了. T1. 括号序列的确简单. 当我们维护左右$cnt$后. 到一个左括号的地方的话. 答案就是:$$\sum\limits_{i=1}^{min(lc,r ...

  4. 「考试」小P的生成树

    考场上想到一半正解,没想到随机化,不然也许能够$A$掉. 题目所说的其实就是向量加法,求模长最长的向量生成树. 我们考虑对于两个向量,必然在平行边形对角线方向上,他们的投影和是最大的,长度就是对角线长 ...

  5. 「考试」num (破800纪念)

    是第800题啦. 怎么说,$rvalue$学长写的已经挺好的了,我在这里做一点补充,写一点理解. 但是这道题真的值得写一下题解,毕竟一百行也算是数论工程题了. 定义函数 $Fp(k,n)$为$n$中$ ...

  6. 「考试」weight

    正解是树剖. 首先Kru求最小生成树. 然后分别考虑树边和非树边的答案. 首先是非树边,非树边链接的两个点在MST上能够构成一条链. 这条链上最大的那条边-1就是这条边的答案. 为什么. 模拟Kru的 ...

  7. 「考试」联赛模拟36-39,noip晚间小测2-3

    36.1 party(CF623D) 很是鸡贼的一道题 首先要明确一点,抓人是有策略,而不是随机的,可以认为等同于按一个给定的顺序猜人,那么这时猜中的概率就只是抓住这个人的概率了 对于每一次猜测,因为 ...

  8. 「CSP-S」2019年第一届Day1游记+题解

    「CSP-S」2019年第一届Day1游记+题解 Day 1 7:30 A.M. 8:10 A.M. 8:30 A.M. T1 格雷码 题目 考场经历+思考(正解) 8:50 A.M. T2 括号树 ...

  9. 「CSP」第一届提高组考后总结

    「CSP」第一届提高组考后总结 问题分析+反思 成绩 心态 考前心态 考时心态 考后心态 方法 心灵鸡汤... 在学习了三年之后,我们信竞迎来了初中最后一次大考,也是第一次 CSPCSPCSP 考试. ...

随机推荐

  1. 访问http接口时返回502 Bad Getway什么原因怎么解决

    使用 httpclient 工具通过代理服务器请求第三方http 接口,多次返回 502 Bad Getway,少数返回正常. 502 Bad Getway是什么意思? 502 Bad Gateway ...

  2. Windows10 1903错误0xc0000135解决方案

    Windows10 1903错误0xc0000135解决方案 === windows10 1903是2019年Mircosoft推出的最新版windows操作系统,但是有很多机器装上之后会存在不支持. ...

  3. Android中内存泄露与如何有效避免OOM总结

    一.关于OOM与内存泄露的概念 我们在Android开发过程中经常会遇到OOM的错误,这是因为我们在APP中没有考虑dalvik虚拟机内存消耗的问题. 1.什么是OOM OOM:即OutOfMemoe ...

  4. 什么是javascript字面量,常量,变量,直接量?

    1.字面量是变量的字符串表示形式.它不是一种值,而是一种变量记法. var a = 1 //1是字面量 var b = 'css' //css是字面量 var c = [5,6,7] //567是字面 ...

  5. 安装、卸载 cocoapods

    卸载cocoapods: localhost:~ je$ sudo gem uninstall cocoapods Remove executables: pod, sandbox-pod in ad ...

  6. Python高阶函数及函数柯里化

    1 Python高阶函数 接收函数为参数,或者把函数作为结果返回的函数为高阶函数. 1.1 自定义sort函数 要求:仿照内建函数sorted,自行实现一个sort函数.内建函数sorted函数是返回 ...

  7. How to Get What You Want 如何得到你想要的

    [1]If you want something, give it away. [2]When a farmer wants more seeds, he takes his seeds and gi ...

  8. Springboot 系列(十四)迅速启用 HTTPS 加密你的网站

    1. 获取 HTTPS 证书 正常情况下 HTTPS 证书需要从证书授权中心获得,这样获得的证书才具有公信力,也会被各种浏览器客户端所认可.常见的证书品牌如 Symantec,GeoTrustm,Tr ...

  9. 18.Tomcat基本应用

    1.JVM基本介绍 JAVA编译型 ---> 编译 C 编译型---> linux --->编译一次 windows --->编译一次 macos ubuntu 跨平台 移值型 ...

  10. 1.Linux-CentOS7.6安装教程

    了解Linux Linux 就是一个操作系统,主要为企业提供支持与服务. 学习Linux需要具备什么基础?能看懂中文,能看懂简单的 English ​ 1.什么是Linux? Linux:和我们常见的 ...