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

虽然说颓代码颓的很厉害不过最终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. MongoDB 学习笔记之 replica set搭建

    Replica set搭建: 修改mongodb.conf文件,指明replSet 登入客户端,指定副本集成员,进行初始化, 如果priority需要调整,使用reconfig()方法.Seconda ...

  2. 版本控制之Git小结

    一.版本控制 1.1 什么是版本控制 版本控制是一种记录一个或若干个文件内容变化,以便将来查阅特定版本修订情况的系统.可以对任何类型的文件进行版本控制. 1.2 为什么需要版本控制 有了版本控制就可以 ...

  3. 未来实现API管理系统的几个关键词

    下面将通过几个关键词的形式说明API管理的重要性和未来的实现方式. 1.生命周期管理 在整个API生命周期中更深入地集成所有工具将进一步提高生命周期循环的速度,而且更重要的是提供满足消费者需求的API ...

  4. ionic3 浏览器端返回

    首屏component.ts文件中使用setupBrowserBackButtonBehavior() { // Register browser back button action(s) wind ...

  5. 二次函数,为什么a>0就可以知道开口向上.

    最近自考. 学习高等数学. 学习高等数学过程中发现高中数学不会,,于是乎开始补高中数学. 学习高中数学过程中又发现初中数学有的不会,,于是乎开始补初中数学.. 可怕(→_→). 今天遇到一个二次函数, ...

  6. Java并发——线程间的等待与通知

    前言: 前面讲完了一些并发编程的原理,现在我们要来学习的是线程之间的协作.通俗来说就是,当前线程在某个条件下需要等待,不需要使用太多系统资源.在某个条件下我们需要去唤醒它,分配给它一定的系统资源,让它 ...

  7. c#之线程基础(一)

    可以认为线程是一个虚拟进程,用于独立运行一个特定的程序. 1.使用c#创建线程 using System; using System.Threading; //3 namespace MutiThre ...

  8. webshell检测方法归纳

    背景 webshell就是以asp.php.jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以将其称做为一种网页后门.黑客在入侵了一个网站后,通常会将asp或php后门文件与网站服务器WEB ...

  9. [BZOJ2392][HAOI2011]Problem c

    Description 给n个人安排座位,先给每个人一个1~n的编号,设第i个人的编号为ai(不同人的编号可以相同),接着从第一个人开始,大家依次入座,第i个人来了以后尝试坐到ai,如果ai被占据了, ...

  10. .NET Core ORM 类库Petapoco中对分页Page添加Order By对查询的影响

    最近一直在使用Petapoco+Entity Framework Core结合开发一套系统. 使用EFCore进行Code First编码,使用PMC命令生成数据库表的信息. 使用Petapoco进行 ...